如何在 SwiftUI 中修复 mac 中视图的大小?

use*_*ser 4 swift swiftui

我在 Xcode 版本 14.1 中遇到了有关 macOS 中视图大小的新更改,在旧版本中,如果我给出帧大小或使用固定大小修饰符,视图将保持该大小,但在 14.1 中,我发现视图可能会扩展,即使我使用frame或fixedSize修饰符,这不是我所期望的。例如,我举了一个例子来说明这个问题,当我将尺寸更新到200.0时,视图/窗口保持更大的尺寸,我希望它会缩小到更小的尺寸,那么我该如何解决这个问题呢?

 struct ContentView: View {
    
    @State private var sizeOfWindow: CGFloat = 400.0
    
    var body: some View {
        VStack {
            
            Image(systemName: "globe")
                .imageScale(.large)
                .foregroundColor(.accentColor)
            
            Text("Hello, world!")
            
            Button("update", action: {
                
                if (sizeOfWindow == 200.0) { sizeOfWindow = 400.0 }
                else { sizeOfWindow = 200.0 }
                
                print(sizeOfWindow)
                
            })
        }
        .frame(width: sizeOfWindow, height: sizeOfWindow)
        .fixedSize()
    }
}
Run Code Online (Sandbox Code Playgroud)

use*_*037 5

信用:

方法:

  • 使用.windowResizability(.contentSize)
  • 连同windowResizability使用以下之一:
    • 如果您想根据内容大小设置大小,请使用fixedSize()
    • 如果你想硬编码框架然后直接设置.frame(width:height:)

代码

@main
struct DemoApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
                .frame(width: 200, height: 200) //or use fixed size and rely on content
        }
        .windowResizability(.contentSize)
    }
}
Run Code Online (Sandbox Code Playgroud)