1

単純な制約があり、Asci-artに触発された形式を使用して指定したいのですが、この例を見つけることができないようです。

NSLayoutConstraint *centerXConstraint = [NSLayoutConstraint constraintWithItem: childView
                                             attribute:NSLayoutAttributeCenterX
                                             relatedBy:NSLayoutRelationEqual
                                                toItem: parentView
                                             attribute:NSLayoutAttributeCenterX
                                            multiplier:1.0f
                                              constant:0.0f]

'|-[childView]-|'などのいくつかのことを試しました ただし、これは、親の左側にXポイントを強制するだけです。

4

2 に答える 2

4

基本的にはできません。視覚的な形式は、達成できるものがかなり制限されており、複雑なものは機能しないか、「一度書けば、二度と理解できない」という正規表現スタイルのレベルに近づきます。アイテム間の間隔を維持する必要があるアイテムのグループをレイアウトすることは問題ありませんが、それ以外の場合は、それだけの価値はありません。

これは単一の制約であり、すでに持っているコードは正しい仕事をします。私はそれに固執します。

制約を頻繁に使用する場合は、既存のコードが非常に冗長であるため、UIViewのカテゴリを使用して一般的な作成を簡素化することをお勧めします。

于 2012-11-13T17:56:09.263 に答える
0

VisualFormat言語を使用してその結果を達成することは可能です。

それを行う1つの方法はこの回答で説明されています: https ://stackoverflow.com/a/14917695/1072846

これを行う別の方法は、「自動レイアウトガイド」の「ビュー間に等間隔を作成する」セクションで説明されているように、「スペーサービュー」を使用することです。

VFLは次のようになります。

NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(viewToCenter, spacerView1, spacerView2);

[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[spacerView1(=>1)][viewToCenter][spacerView2(=>1)]|" options:0 metrics:nil views:viewsDictionary]`

viewToCenter'sintrinsicContentSizeが設定されていると仮定します。

于 2014-02-27T16:54:50.973 に答える