Auto Layout Visual Format で次の制約を実装しようとしています。
- コンテナ ビューからラベルまでの標準距離
- コンテナー ビューからtextFieldまでの固定距離
- labelとtextFieldの間のベースライン配置
最初の 2 つの制約は単純です。
var viewDict: [NSObject:AnyObject] = [:]
viewDict["label"] = label
viewDict["textField"] = textField
self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("|-[label]", options: nil, metrics: nil, views: viewDict))
self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("|-100-[textField]", options: nil, metrics: nil, views: viewDict))
2 つのビューを揃えるには、それに応じて options パラメータを設定する必要があることを理解しています。仕様によると、オプション パラメータは、書式文字列パラメータで指定されたビューに適用されます。
しかし、ビュー間のスペースに関する仮定を行わずに、フォーマット文字列でビューを一覧表示するにはどうすればよいでしょうか?
このようなことをすると、 と の間の距離に関して不要な制約が作成されlabel
ますtextField
。
self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("[label]-[inputField]", options: NSLayoutFormatOptions.AlignAllBaseline, metrics: nil, views: viewDict))
不要なサイズ制約の優先度をゼロに設定することで回避できると思いますが、それでも概念的に何かが欠けていると感じています。
このようなシナリオでは Visual Format を使用しないことをお勧めしますか?