Cocoa がビューの制約を定義するために使用する言語では、例は常に「button1」、「button2」などの名前になります。しかし、この名前は実際には何を意味するのでしょうか? nub ファイルの名前ですか、コントローラーまたはビューのクラス名ですか? 同じ nib ファイルとクラスの複数のビューをインスタンス化すると、それらはどのような名前になり、どのように設定できますか?
1 に答える
3
これらは、nib ファイル内の実際のボタンに関連付けられるプレースホルダーです。
アップデート
addConstraints:options:metrics:views:
制約しようとしているビューのメソッドを使用してコードに制約を追加している場合 ( のインスタンスUIView
がコードで作成されたか、nib から読み込まれたかに関係なく)、最後のパラメーター ( views:
) は、キーが で提供するものである辞書を受け入れUIConstraint
ますアスキー アート (button1、button2 など) と値は、コードで作成するか、別の場所 (IBOutlet など) からインスタンスを取得する実際のビューです。
NSDictionaryOfVariableBindings
ビューの可変数のインスタンスを受け入れ、それらのインスタンスの名前のような同じプレースホルダー名に関連付けるマクロを使用して、ディクショナリをすばやく作成できます。例えば
// This is a ASCII constraint:
NSString *constraintAscii = @"|-[button1]-12-[button2]-|";
// Bound views for constraints:
UIButton *button2 = ... // code to create button2 variable
// let's say that button1 is actually an IBOutlet for instance variable
// now we create the dictionary of views for our new constraint
NSDictionary *views = NSDictionaryOfVariableBindings(button1, button2);
// now we create the constraint using these variables
NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat: constraintAscii
options: 0
metrics: nil
views: views];
于 2012-06-10T18:03:04.507 に答える