如何防止背景中的 SwiftUI View 在覆盖 .sheet(isPresented:) 中的 View 时缩小几乎全屏?

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

我想用 .sheet(isPresented:) 打开最大高度内容,而不是对后面的内容进行动画处理和收缩(在红色矩形中)。可以吗?

swift swiftui
1个回答
0
投票

当呈现制动装置太大时,背景视图会变小。例如,您可以看到,使用

.medium
制动装置时,背景视图不会变小。

大概显示定位有一个阈值,如果超过该阈值,背景视图就会变小。您可以将制动装置设置为略低于该阈值。

我发现有效的是

.fraction(0.999)
,或者高度比最大高度小 1 的定制制动器。

struct ContentView: View {
    @State var x = false
    var body: some View {
        Button("Click") {
            x = true
        }
        .sheet(isPresented: $x) {
            Text("Foo")
                .presentationDetents([
                    .custom(CustomDetent.self) // or .fraction(0.999)
                ])
        }
    }
}

struct CustomDetent: CustomPresentationDetent {
    static func height(in context: Context) -> CGFloat? {
        return context.maxDetentValue - 1
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.