如何设置主窗口的位置和大小(以编程方式)?

时间:2015-10-01 08:09:54

标签: macos swift cocoa

我正在使用OS X的最新默认项目(10.11,Xcode 7.0)。它使用故事板,层次结构如下:

Window Controller -> View Controller

我想设置窗口的初始位置和帧大小。显然用户可以改变它,但我希望它从一些默认值开始。我已经尝试了子类化NSWindowController,但这没有效果。

  class WindowController: NSWindowController {

     override func windowDidLoad() {
        super.windowDidLoad()

        guard let window = window else {
           return
        }

        let windowOriginPoint = CGPoint(x: 0, y: 0)
        let windowSize = CGSize(width: 800, height: 400)
        window.setFrame(NSRect(origin: windowOriginPoint, size: windowSize), display: true)

        print("windowDidLoad")
     }

  }

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。我通过在setFrame内移动windowDidBecomeMain代码而不是windowDidLoad来解决此问题;如果手动移动窗口并重新选择成为主窗口,则会产生不良副作用:拖动时窗口跳转并立即返回到正确位置。为了避免它,我使用了一个补丁:在windowController中,我声明了一个

private var firstAppearance = true;

windowDidBecomeMain我只在firstAppearance上执行setFrame;然后我将firstAppearance设置为false。