1

制約を使用するのはこれが初めての試みなので、初歩的な質問をお許しください。

サブビューがビューの幅またはビューの幅の 75% 未満になるように、一連の制約を設定できるようにしたいと考えています。したがって、サブビューの幅がビューの幅の 75% を超える場合は、それを全幅に設定します。subView が iPhone と iPad で適切に表示されるようにするために、これを行いたいと考えています。

これは制約を使用して可能ですか? 2 つの制約を設定しましたが、ビューの幅に基づいてどちらを選択するかを制約システムに伝えるにはどうすればよいですか?

// Ensure it's width is either the less than 3 quarters of the page width or the full page width (including the gutter margins)
NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationLessThanOrEqual toItem:self attribute:NSLayoutAttributeWidth multiplier:0.75 constant:0];
[self.constraints addObject:constraint];

constraint = [NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeWidth multiplier:1.0 constant:0];
[self.constraints addObject:constraint];

// Add the constraints to the page
[self addConstraints:self.constraints];

かなり行き詰まっているので、どんな助けも大歓迎です。

デイブ

4

2 に答える 2

1

プラットフォームに基づいて適切な制約を適用できなかった理由はありますか?

NSLayoutConstraint *constraint;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
  constraint = [NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationLessThanOrEqual toItem:self attribute:NSLayoutAttributeWidth multiplier:0.75 constant:0];
}
else {
  constraint = [NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeWidth multiplier:1.0 constant:0];
}
[self addConstraint:constraint];

また、コメントに基づいて、優先度を使用しようとしたかどうかが明確ではありませんでした...うまくいきましたか?

于 2012-12-13T20:13:34.590 に答える
0

議論したように、自動レイアウトはバージョン MacOS 10.8 では (まだ) これを処理できないようです。したがって、標準コードで実装することをお勧めします。

于 2012-12-13T08:40:42.097 に答える