Swiftui Xcode 11——迅捷';s暗模式设置
好的。我知道这不应该是火箭科学。我似乎无法让黑暗模式工作,我已经阅读了几次文档。希望有人能挑出我错过了什么 我在资源目录中有一个命名颜色 为了便于测试,我将plist模式设置为暗模式。 我的内容视图如下所示:Swiftui Xcode 11——迅捷';s暗模式设置,swiftui,xcode11,ios13,Swiftui,Xcode11,Ios13,好的。我知道这不应该是火箭科学。我似乎无法让黑暗模式工作,我已经阅读了几次文档。希望有人能挑出我错过了什么 我在资源目录中有一个命名颜色 为了便于测试,我将plist模式设置为暗模式。 我的内容视图如下所示: struct ContentView : View { var body: some View { VStack { Text("Hello World") Text("Yo yo yo") .color(Color("da
struct ContentView : View {
var body: some View {
VStack {
Text("Hello World")
Text("Yo yo yo")
.color(Color("darkModeColor"))
}
}
}
无论我做什么,颜色总是“任何”的外观,当它应该采取青色
我知道暗模式本身可以工作,因为苹果提供的所有系统语义颜色都可以正常工作,因为你可以看到“Hello World”文本变为白色
你知道我遗漏了什么,或者其他人在使用Xcode 11 Beta 1时遇到过这个问题吗?你可以在预览中更改配色方案
struct ContentView\u预览:PreviewProvider{
静态var预览:一些视图{
ContentView().environment(\.colorScheme、.dark)
}
}
upd:您可以为明暗模式创建任何预览
struct ContentView\u预览:PreviewProvider{
静态var预览:一些视图{
团体{
ContentView()
ContentView().environment(\.colorScheme、.dark)
}
}
}
这可能是Xcode 11测试版中的一个bug。我在UIKit应用程序中尝试了暗模式功能,使用UIColor
时效果很好,但在SwiftUI中使用color
时,同样的颜色不起作用。希望这将在下一个版本中修复
更新:此问题已通过Xcode 11 beta 3解决 我们可以用来克服当前限制的一个有效(但相当详细)解决方案是使用当前配色方案参数化的方法扩展颜色,如下所示:
import SwiftUI
extension Color {
static let lightBackgroundColor = Color(white: 1.0)
static let darkBackgroundColor = Color(white: 0.0)
static func backgroundColor(for colorScheme: ColorScheme) -> Color {
if colorScheme == .dark {
return darkBackgroundColor
} else {
return lightBackgroundColor
}
}
}
在需要访问这些颜色的视图中,您将为颜色方案添加环境属性,并使用它检索动态颜色:
import SwiftUI
struct ColoredView : View {
@Environment(\.colorScheme) var colorScheme: ColorScheme
var body: some View {
Rectangle().fill(Color.backgroundColor(for: self.colorScheme))
}
}
代码中定义的这些颜色适用于Xcode预览和模拟器。同意。只是帮助其他开发人员运行它,而不是把我的头发拔出来!这在beta 2中仍然存在,不是吗?@Miotz是的,它还没有修复。这不适用于颜色,请正确阅读问题,尝试相同的方法,然后回答。如果我们必须使用这样的颜色,那么颜色模板在资产中的意义是什么。你的问题并不是给出问题的答案,而是给出了另一种手动方式……这一切都很好,但正如其他人所指出的,资产中的颜色模板在当前测试版中不起作用。我只是提供了一个工作的替代品。对我来说是有效的——至少作为一个临时的解决办法。我希望在我的根
ContentView
中包含一些视图的语义边框。我很感激这个提示。这个问题是用Xcode 11 beta 3修复的:]