在我的资源中,我已经声明了两种不同的主题色,无论是亮的还是暗的外观,效果都很好。然而,我在应用程序中有一个特定的地方,在那里我需要使用颜色的浅色变体,而不管是否启用了暗模式。有没有其他方法可以在代码中获得这种颜色,除了将相同的颜色声明为只有一个变量的单独颜色之外?
发布于 2020-03-17 01:26:12
在SwiftUI中,如果需要为某些子视图使用轻量级变量,则强制为其指定.colorScheme
就足够了,如下所示
颜色变体:
演示:
var body: some View {
VStack {
Rectangle().fill(Color("testColor"))
.frame(width: 100, height: 100)
.environment(\.colorScheme, .light) // << force light
}
.frame(width: 300, height: 300)
.background(Color("testColor")) // << system appearance
}
发布于 2021-01-14 22:57:55
如果您正在使用UIKit,那么UIColor
的resolvedColor(with traitCollection:)
方法是覆盖默认配色方案的最佳选择。
如果你和我一样,不喜欢看到UIColors在你的SwiftUI代码中徘徊,下面是一种更快速的so y方式,可以获得相同的效果,到目前为止对我来说效果很好:
extension View {
@ViewBuilder
func forceDarkVariant(_ forceDark: Bool) -> some View {
if forceDark {
self.environment(\.colorScheme, .dark)
} else {
self
}
}
}
https://stackoverflow.com/questions/60709874
复制相似问题