如何从Cocoa中的NSApplicationDelegate调用addConstraint?

时间:2014-06-27 15:58:15

标签: objective-c xcode macos cocoa

我已成功使用以下代码在自定义视图类(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一起使用

0 个答案:

没有答案