我尝试创建一个应用程序,现在我在屏幕分辨率发生变化时会做出一些改变,但是我没有找到如何拦截这个事件。
你有什么想法我怎么能参加那个活动?
答案 0 :(得分:3)
当连接到计算机的显示器配置发生变化时,会发布NSApplicationDidChangeScreenParametersNotification
您可以注册该通知,例如与
NSNotificationCenter.defaultCenter().addObserverForName(NSApplicationDidChangeScreenParametersNotification,
object: NSApplication.sharedApplication(),
queue: NSOperationQueue.mainQueue()) {
notification -> Void in
println("screen parameters changed")
}
请注意,此通知的原因可能有多种 解雇,例如码头大小的变化(在Cocoa Dock fires NSApplicationDidChangeScreenParametersNotification中观察到),所以你必须这样做 "记住"旧决议并将其与新决议进行比较。
答案 1 :(得分:2)
迅速4:
更改计算机上连接的显示器的配置后,将发布didChangeScreenParametersNotification
。
在AppDelegate类的func applicationDidFinishLaunching()
或ViewController类的func viewDidLoad()
内,插入以下代码:
NotificationCenter.default.addObserver(forName: NSApplication.didChangeScreenParametersNotification,
object: NSApplication.shared,
queue: OperationQueue.main) {
notification -> Void in
print("screen parameters changed")}
我个人使用它在Mac和外部屏幕之间切换时将应用程序的位置居中。
答案 2 :(得分:1)
这是更新后的Swift 3代码:
NotificationCenter.default.addObserver(forName: NSNotification.Name.NSApplicationDidChangeScreenParameters,
object: NSApplication.shared(),
queue: OperationQueue.main) {
notification -> Void in
print("screen parameters changed")
}