在Swift中,当一个窗口变成全屏时,如何才能收到通知?

问题描述 投票:2回答:2

我想在我的游戏中添加一个全屏模式的设置,但是我需要在用户手动切换全屏模式时自动更新设置。但是,如果用户手动切换全屏模式,我需要自动更新设置。

如何通过任何方式在切换全屏后立即运行代码?换句话说,当用户点击窗口顶部的绿色按钮使其成为全屏时,我如何才能收到通知?

在没有这些信息的情况下,我无法弄清楚如何将我的应用程序的全屏模式设置与操作系统提供的UI同步。

swift macos fullscreen
2个回答
6
投票

你只需要等待来自 NSWindow

import SwiftUI
import Combine

struct SampleView: View {
    var cancellabel : AnyCancellable?
        init(){
            cancellabel = NotificationCenter.default.publisher(for: NSWindow.willEnterFullScreenNotification).sink { (notification) in
        print(notification.object)
    }

    var body: some View {

    }
}

4
投票

使用其他答案中的代码,我能够构造出这样的代码。

在applicationDidFinishLaunching中,

NotificationCenter.default.addObserver(forName: NSWindow.willEnterFullScreenNotification, object: nil, queue: OperationQueue.main, using: { note in
    print("Entered Fullscreen")
})

NotificationCenter.default.addObserver(forName: NSWindow.willExitFullScreenNotification, object: nil, queue: OperationQueue.main, using: { note in
    print("Exited Fullscreen")
})
© www.soinside.com 2019 - 2024. All rights reserved.