防止 SwiftUI 框架大小更改影响 macOS 应用程序中的窗口大小

问题描述 投票:0回答:1

我正在使用 SwiftUI 开发 macOS 应用程序,并遇到了一种情况,即使用

View
动态调整 SwiftUI
Rectangle
(具体来说,
Slider
)的帧大小会导致窗口大小相应更改。

我的应用程序需要适应内容的可变窗口大小,但我需要窗口大小保持不受特定内部视图大小调整的影响。

将视图放置在固定大小的容器中或明确设置固定窗口大小等常见解决方案无法满足我的需求。

谢谢。

这是示例的简化版本:

import SwiftUI

struct ContentView: View {
    @State private var rectWidth: CGFloat = 100

    var body: some View {
        VStack {
            Rectangle()
                .frame(width: rectWidth, height: 100)
                .foregroundColor(.blue)
            Slider(value: $rectWidth, in: 50...2000)
                .padding()
        }
    }
}

swift macos swiftui layout
1个回答
0
投票

使用GeometryReader解决了这个问题。

   import SwiftUI
    
    struct ContentView: View {
        @State private var rectWidth: CGFloat = 100
    
        var body: some View {
            GeometryReader { geometry in
                VStack {
                    Rectangle()
                        .frame(width: rectWidth, height: 100)
                        .foregroundColor(.blue)
                    Slider(value: $rectWidth, in: 50...geometry.size.width)
                        .padding()
                }
                .frame(maxWidth: .infinity, maxHeight: .infinity)
            }
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.