你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

macOS SwiftUI 界面大全之检测 macOS 中的屏幕尺寸与分辨率变化

2021/12/31 8:38:15

实战需求

开发macOS App时我们有时需求要一种方法来检测屏幕分辨率的变化或用户何时更改显示器配置。例如,插入新的主显示器或从多屏设置返回时,我们需要调整当前打开的图像的大小。

解决方案

这个过程相当简单。您必须监听的事件是

NSApplication.didChangeScreenParametersNotification 事件。

首先,我们创建一个变量来保存这个事件。

var screenResChanged = NotificationCenter.default.publisher(for: NSApplication.didChangeScreenParametersNotification)

然后我们 使用SwiftUI 中的onReceive(_:perform:)方法来监听它。您可以将其添加到您想要监听的任何 SwiftUI 视图中

import SwiftUI

struct Balls: View {
    @State var oldScreenSize = NSSize.zero
    @State var currentScreenSize = NSSize.zero
    @State var hasSizeChanged = false
    var screenResChanged = NotificationCenter.default.publisher(for: NSApplication.didChangeScreenParametersNotification)
    
    var body: some View {
        HStack{
            if (hasSizeChanged){
                Text("Screen Size" + NS