我已成功使用以下代码在自定义视图类(NSView的子类)中以编程方式成功添加约束:
[self addConstraint:
[NSLayoutConstraint constraintWithItem:self.myObject
attribute:NSLayoutAttributeCenterY
relatedBy:NSLayoutRelationEqual
toItem:self
attribute:NSLayoutAttributeCenterY
multiplier:1
constant:0]];
但现在我想从App Delegate(NSApplicationDelegate的子类)做类似的事情。 我不确定将约束添加到哪个对象。
尝试以相同的方式调用它会导致编译错误
[self addConstraint:
[NSLayoutConstraint constraintWithItem:self.backgroundBox
attribute:NSLayoutAttributeCenterY
relatedBy:NSLayoutRelationEqual
toItem:self
attribute:NSLayoutAttributeCenterY
multiplier:1
constant:0]];
我已经尝试替换我添加约束的对象(以及" toItem"参数中的对象)self.view(持有backgroundBox对象的视图),[self.window contentView]和甚至self.backgroundBox.superview,但他们要么不会编译,要么似乎没有任何效果。
任何人都可以建议正确的方法吗? 我只是希望能够在视图中垂直居中backgroundBox (self.view是链接到app delegate的nib文件中的顶级视图) (self.backgroundBox是self.view中的一个框)
非常感谢任何帮助。提前谢谢!
注意:我更倾向于以编程方式执行此操作,而不必使用IB来添加约束)
将Xcode5与OSX 10.9.3一起使用