2016-02-28 128 views
-3

我正在创建一个简单的操作系统应用程序,但我找不到任何地方如何进行调整大小事件。调整窗口大小事件

让我们假设我想打印新的宽度和高度,我有这样的控制器:

class ViewController: NSViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view. 
    } 
    override var representedObject: AnyObject? { 
     didSet { 
      // Update the view, if already loaded. 
     } 
    } 

} 

我有什么补充?谢谢。我的问题是不一样的Listen for window resize event in Swift/Objective-C。由于我的视图必须扩展NSViewController而不是NSWindowController。在他的回答中,他没有解释windowWillResize必须返回什么

+0

不,没有,他的代码不能正常工作! – Francesco

回答

1

您需要在某处实施NSWindowDelegate,并将该窗口的委托设置为该对象。如果你愿意,你可以在你的视图控制器中实现这个代码。

class ViewController: NSViewController, NSWindowDelegate { 
    override func viewWillAppear() { 
     self.view.window.delegate = self 
    } 

    func windowWillResize(sender: NSWindow, toSize frameSize: NSSize) -> NSSize { 
     // Your code goes here 
    } 

    func windowDidResize(notification: NSNotification) { 
     // Your code goes here 
    } 
} 
+0

self.view.window is nil – Francesco

+0

我认为当时窗口已经被连接 - 也许尝试在viewDidAppear中的代码。 – Michael

+0

@micheal正如我所说,它不起作用 – Francesco

1

斯威夫特4 - MacOS的10.13

class ViewController: NSViewController, NSWindowDelegate { 

    override func viewDidAppear() { 
     view.window?.delegate = self 
    } 

    func windowDidResize(_ notification: Notification) { 
     // This will print the window's size each time it is resized. 
     print(view.window?.frame.size) 
    } 
}