Mac OS X使用带视图控制器的自动布局并允许窗口调整大小

时间:2015-09-05 20:09:49

标签: macos autolayout

我试图添加一个视图来填充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的框架,但随后窗口就会崩溃,根本没有高度。

1 个答案:

答案 0 :(得分:2)

每当您以编程方式创建视图并希望使用自动布局来定位视图时,您需要将其translatesAutoresizingMaskIntoConstraints属性设置为false。