使用 SwiftUI 在深色模式下使用 .ultraThinMaterial 时的最佳实践是什么?

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

我正在制作的 iOS 应用程序支持深色模式,并且我在导航栏的背景中使用 .ultraThinMaterial 以获得更好的对比度和可见性。虽然它在浅色模式下看起来很棒,但深色模式版本似乎有这种白色色调,在我看来,这看起来有点俗气。

我正在寻找一种只能针对深色模式实现的解决方案,以避免它看起来像这样:

这些图片并没有反映出它在 iPhone 物理屏幕上的糟糕表现,至少在我的显示器上是这样的

这是使用 .ultraThinMaterial 的代码:

Color.clear
            .background(.ultraThinMaterial)
            .blur(radius: 20)
            .saturation(0.0)
            .ignoresSafeArea()
            .frame(height:70+80)
            .offset(y: 50)

谢谢!

ios swift swiftui
2个回答
0
投票

你可以做这样的事情

struct ContentView: View {

@Environment(\.colorScheme) var colorScheme

var body: some View {
    ZStack{
        if colorScheme == .light{
            Color.clear
                .background(.ultraThinMaterial)
                .blur(radius: 20)
                .saturation(0.0)
                .ignoresSafeArea()
                .frame(height:70+80)
                .offset(y: 50)
        }
    }//: ZSTACK
}
}

0
投票

已经晚了,但由于我在这里没有看到任何接受的答案,所以添加一个。

您可以使用额外的一行代码强制 UI 根据您的要求仅使用深色或浅色版本

.environment(\.colorScheme, .light) 

.environment(\.colorScheme, .dark)
© www.soinside.com 2019 - 2024. All rights reserved.