【问题标题】:In OS X app, how to use auto layout when a window is created programmatically?在 OS X 应用程序中,如何在以编程方式创建窗口时使用自动布局?
【发布时间】: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


【解决方案1】:

【讨论】:

  • 我知道如何使用自动布局,但在我上面的代码中不知道。你如何在这里获取窗口的 contentView 来做自动布局约束?我不是在问一般如何进行自动布局。谢谢。
猜你喜欢
  • 2013-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-23
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多