【发布时间】:2017-05-25 06:45:15
【问题描述】:
我的 OS X 应用程序尝试以编程方式创建一个窗口,如下所示(由我之前看到的另一个 SO 问题建议):
class MyViewController: NSViewController {
override func loadView() {
let view = NSView(frame: NSMakeRect(0,0,300,100))
view.wantsLayer = true
view.layer?.borderWidth = 2
view.layer?.borderColor = NSColor.red.cgColor
self.view = view
}
}
let viewController = MyViewController()
let window = NSWindow(contentRect: someFrame, styleMask: [.resizable, .closable, .miniaturizable, .titled], backing: NSBackingStoreType.buffered, defer: false)
window.contentView?.addSubview(viewController.view)
window.makeKeyAndOrderFront(nil)
我可以通过上面的代码成功创建窗口。但是,我的问题是……如何使视图控制器内loadView 中创建的视图与窗口的内容视图大小相同?
现在,它使用固定数字(0、0、300、100)创建视图。如何使用Auto layout让这个view和window一样大小,这样当window调整大小时,这个view也会自动调整大小?
【问题讨论】:
-
为什么不能在 window.contentview 和 viewcontroller.view 之间使用约束?只需使用约束将 viewcontroller.view 的顶部、左侧、右侧和底部固定到 window.contentview
标签: objective-c swift macos nswindow nsviewcontroller