0
在language Cocoa uses to define view constraints中,示例总是被命名为“button1”,“button2”等。但是这个名称实际上意味着什么?它们是结点文件的名称,控制器或视图的类名称?如果我实例化同一个nib文件和类的几个视图,他们会得到什么名称,以及如何设置它们?什么是可可视觉格式语言的视图名称?
在language Cocoa uses to define view constraints中,示例总是被命名为“button1”,“button2”等。但是这个名称实际上意味着什么?它们是结点文件的名称,控制器或视图的类名称?如果我实例化同一个nib文件和类的几个视图,他们会得到什么名称,以及如何设置它们?什么是可可视觉格式语言的视图名称?
它们是将与您的笔尖文件中的实际按钮关联的占位符。
更新
如果要添加使用addConstraints:options:metrics:views:
方法上图你试图约束(是否UIView
该实例是在代码中创建或从笔尖加载)的代码约束,最后一个参数( views:
)接受字典谁是你在UIConstraint
的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];
这些名字是如何设置的?我怎样才能设置他们的价值的实例不存在于nib文件,因为它们是用代码创建的? –
感谢编辑(它解释了很多,并且帮助很大),但我仍然不明白字典的关键字的实际字符串来自哪里。他们总是等于变量的名称,如你的例子? –
字典中的字符串由宏创建。当使用这个宏时 - 是的,它们来自变量的名称。 – Eimantas