0

より大きいか等しいおよびより小さいか等しい複数の制約を定義しました。スーパービューのサイズが変更されたときに、iOS はどのビューがサイズを変更するかをどのように決定しますか?

制約が 10 より大きく 20 より小さい 1 つのビューがあるとします。そして、制約が 40 より大きく 60 より小さい 2 つ目のビューがあるとします。

スーパービューのサイズが変更され、使用可能なスペースが 10 ピクセル増加します。最初にサイズ変更を許可する (そして 10 ピクセルを取得する) 制約を定義する方法が必要です。

4

1 に答える 1

1

NSLayoutConstraint の優先順位は、iOS と OS X に最初に満たすべき制約を伝えます。

viewOne最初に展開したいビューがある場合は、ビジュアル フォーマットで制約を適用します@"H:[viewOne(==9999@499)]"10≤viewOne≤20これにより、必要な制約&が満たされた後、幅 9,999 ピクセル40≤viewTwo≤60を作成しようとする必要があることを iOS に伝えます 。viewOneviewTwo

マジックナンバー9999を保存したくない場合は、

NSNumber* maxWidthForViewOne = @(20) ;
NSLayoutConstraint* constraint = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[viewOne(==asBigAsPossible@499)]"  options:0  metrics:@{@"asBigAsPossible":maxWidthForViewOne}  views:views] [0] ;

これらを OS X でテストしたところ、499 (NSLayoutPriorityWindowSizeStayPut - 1) が最高の優先度でviewOneあり、ウィンドウのサイズを変更して縮小できることがわかりました。iOS を使用しているので、どの優先順位が好きなように動作するかをテストする必要があります。

于 2013-02-11T21:02:35.843 に答える