我试图添加一个视图来填充Mac OS X中的整个窗口,如下所示:
func viewDidLoad() {
sparkView = NSView(frame: CGRectMake(0, 0, 600,400))
self.view.addConstraint(NSLayoutConstraint(item: sparkView!, attribute: NSLayoutAttribute.Left, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Left, multiplier: 1, constant: 0))
self.view.addConstraint(NSLayoutConstraint(item: sparkView!, attribute: NSLayoutAttribute.Right, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Right, multiplier: 1, constant: 0))
self.view.addConstraint(NSLayoutConstraint(item: sparkView!, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Top, multiplier: 1, constant: 0))
self.view.addConstraint(NSLayoutConstraint(item: sparkView!, attribute: NSLayoutAttribute.Bottom, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0))
sparkView?.contentCompressionResistancePriorityForOrientation(NSLayoutConstraintOrientation(rawValue: 499)!)
}
为什么这会限制窗口大小?如果我这样做,我就不能让窗户更大。我希望sparkView
始终填满窗口。对于上下文,这是在故事板中NSWindow内部的视图控制器中创建的。
我尝试不设置sparkView的框架,但随后窗口就会崩溃,根本没有高度。
答案 0 :(得分:2)
每当您以编程方式创建视图并希望使用自动布局来定位视图时,您需要将其translatesAutoresizingMaskIntoConstraints
属性设置为false。