Macos windowDidResize协议swift OSX
我正在创建一个程序,我希望UI根据窗口的大小进行更改。我正在寻找一些在调整窗口大小时调用的方法。我查看了windowDidResize的文档,但在调整窗口大小时无法使其正常工作Macos windowDidResize协议swift OSX,macos,swift,window,protocols,Macos,Swift,Window,Protocols,我正在创建一个程序,我希望UI根据窗口的大小进行更改。我正在寻找一些在调整窗口大小时调用的方法。我查看了windowDidResize的文档,但在调整窗口大小时无法使其正常工作 import SpriteKit import AppKit class GameScene: SKScene , SKPhysicsContactDelegate ,NSWindowDelegate{ **** bunch of code **** func windowDidResize (noti
import SpriteKit
import AppKit
class GameScene: SKScene , SKPhysicsContactDelegate ,NSWindowDelegate{
**** bunch of code ****
func windowDidResize (notification: NSNotification) {
HUDComp.updatePosition(size)
println("Screen has been resized")
}
}
非常感谢您提供任何信息。如果您继承了NSWindowDelegate,您只需将observer添加到NSNotificationCenter即可。 代码在这里
NSNotificationCenter.defaultCenter().addObserver(self,selector:selector(“windowDidResize:”),name:NSWindowDidResizeNotification,object:nil)
我的两分钱兑换swift 5。(同时显示委托和通知,选择一个…)
Swift 5 macOS 11+
为Xcode 12.2和macOS Big-Sur更新
当窗口的尺寸发生更改时,这将调用windowDidResize
class ViewController: NSViewController, NSWindowDelegate {
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(NSWindowDelegate.windowDidResize(_:)), name: NSWindow.didResizeNotification, object: nil)
}
func windowDidResize(_ notification: Notification) {
print(view.window?.frame.size as Any)
}
}
class ViewController: NSViewController, NSWindowDelegate {
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(NSWindowDelegate.windowDidResize(_:)), name: NSWindow.didResizeNotification, object: nil)
}
func windowDidResize(_ notification: Notification) {
print(view.window?.frame.size as Any)
}
}