在Cocoa 用于定义视图约束的语言中,示例总是命名为“button1”、“button2”等。但是这些名称实际上是什么意思呢?它们是 nub 文件的名称、控制器或视图的类名吗?如果我实例化同一个 nib 文件和类的多个视图,它们会得到什么名称,以及如何设置它们?
问问题
349 次
1 回答
3
它们是占位符,将与您的 nib 文件中的实际按钮相关联。
更新
如果您在代码中使用addConstraints:options:metrics:views:
您尝试约束的视图上的方法添加约束(无论该实例UIView
是在代码中创建还是从 nib 加载),最后一个参数 ( views:
) 接受字典,谁的键是您在UIConstraint
's中提供的键ascii 艺术(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 回答