如何在swift中获得分辨率更改事件?

时间:2015-05-23 12:09:08

标签: macos swift cocoa

我尝试创建一个应用程序,现在我在屏幕分辨率发生变化时会做出一些改变,但是我没有找到如何拦截这个事件。

你有什么想法我怎么能参加那个活动?

3 个答案:

答案 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")
    }