我正在尝试为Apple Watch界面使用UIKit颜色。您可以在iOS中使用UIColor
类属性(例如.systemBackground
和其他属性)来执行此操作。例如:
let myColor = UIColor.systemBlue
编译watchOS扩展目标时给我错误:
类型'UIColor'没有成员'UIColor.systemBlue'。
[我不知道有没有其他方法可以获取此系统颜色,如果没有,我需要获取一些UI元素的颜色,例如SwiftUI表视图行背景,其外观与UIColor.systemGray5
非常相似。
@State private var isActive = false
var body: some View {
List {
Section() {
ForEach(self.dataSource) { item in
CustomCell()
.listRowPlatterColor(self.isActive ? Color(UIColor.systemGray5) : Color(.orange))
}
}
}
}
上面的代码将无法编译,因为在WatchKit中找不到UIColor.systemGray5
。我试图创建一个在iPhone和Watch target中都被起诉的类,它可以修复Xcode自动补全功能。但是,当尝试使用Apple Watch目标时,该应用程序会中断。
我希望有一种方法,而不是找到正确的颜色并对其进行硬编码。
[查看文档,UIColor.system-ish仅适用于iOS,Catalyst和某些tvOS。您可以做的是扩展UIColor并创建systemGray5:
extension UIColor {
static var mySystemGray5: UIColor {
return .init(red: 229/255, green: 229/255, blue: 234/255, alpha: 1)
}
}
并在您的代码上使用,如:
ForEach(self.dataSource) { item in
CustomCell()
.listRowPlatterColor(self.isActive ? Color(UIColor.mySystemGray5) : Color(.orange))
}