当 window 在 Swift 中变为全屏时,如何获得通知?
How can I get a notification when a window becomes full-screen in Swift?
我想为我的游戏添加全屏模式设置。但是,如果用户手动切换全屏模式,我需要自动更新设置。
如何在以任何方式切换全屏后立即运行编码?换句话说,当用户点击 window 顶部的绿色按钮使其全屏时,我如何收到通知?
没有这些信息,我不知道如何将我的应用程序的全屏模式设置与操作系统提供的 UI 同步。
您只需要等待来自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 {
}
}
使用其他答案中的代码,我能够构建代码来执行此操作:
在 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")
})
我想为我的游戏添加全屏模式设置。但是,如果用户手动切换全屏模式,我需要自动更新设置。
如何在以任何方式切换全屏后立即运行编码?换句话说,当用户点击 window 顶部的绿色按钮使其全屏时,我如何收到通知?
没有这些信息,我不知道如何将我的应用程序的全屏模式设置与操作系统提供的 UI 同步。
您只需要等待来自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 {
}
}
使用其他答案中的代码,我能够构建代码来执行此操作:
在 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")
})