深色模式首选ColorScheme不更新按钮

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

有谁知道为什么会这样吗?

我试图让我的用户可以选择将深色模式设置为应用程序中的首选项。

我使用 AppStorage 来保存用户选择,并在根视图上使用 PreferredColorScheme 来更新整个应用程序。

 @AppStorage(StorageKey.darkMode) var isDarkMode: Bool = false
...
.preferredColorScheme(isDarkMode ? .dark : nil)

在大多数情况下,这是有效的,并且过去工作得很好。但自 iOS 16/17 以来,按钮或导航链接不会更新其颜色。例如。我有一个白色的系统背景,按预期更改为黑色,但所有按钮的文本都没有更改,并且看起来隐藏在黑色背景上。然而正常的文本更新很好。

ios swiftui color-scheme darkmode
1个回答
0
投票

我在评论中问,你如何设计按钮的样式。您举了这个

Button
作为示例:

Button {} label: {
    Image(systemName: "ellipsis")
        .font(.system(size: 18, weight: .medium))
        .padding(.horizontal, 18)
}

当我单独尝试时,前景色是蓝色。所以我怀疑,你一定在更高的水平上应用类似

foregroundStyle(.black)
的东西。如果是这样的话,前景色总是黑色也就不足为奇了。

要修复此问题,请尝试将

.foregroundStyle(.primary)
应用于按钮本身:

Button {} label: {
    // ...
}
.foregroundStyle(.primary)
© www.soinside.com 2019 - 2024. All rights reserved.