0

Cocoa がビューの制約を定義するために使用する言語では、例は常に「button1」、「button2」などの名前になります。しかし、この名前は実際には何を意味するのでしょうか? nub ファイルの名前ですか、コントローラーまたはビューのクラス名ですか? 同じ nib ファイルとクラスの複数のビューをインスタンス化すると、それらはどのような名前になり、どのように設定できますか?

4

1 に答える 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 に答える