uikit - 在 WatchKit 中访问系统颜色
问题描述
我正在尝试为我的 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))
}
}
}
}
上面的代码不会编译,因为UIColor.systemGray5
在 WatchKit 中找不到。我试图创建一个在 iPhone 和 Watch 目标中都被起诉的类,它修复了 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))
}
推荐阅读
- angular - 按顺序调用服务并使用结果中的参数
- gradle - 链式 Gradle 任务无法读取上一个任务生成的文件
- c++ - 矢量擦除功能无法正常工作
- php - 如何使用php从电子邮件中获取@符号后的数据
- r - networkD3 Sankey 图没有出现在查看器中,没有错误消息
- html - How to add this effect
- swift - Firebase Auth: user profile changes are not synced to other devices?
- google-cloud-dataflow - 将 avro 文件导入 Bigtable - 找不到家庭错误
- r - 为什么 Flowcore 包中的函数 Write.fcs 会损坏我的 FCS 文件
- php - php无法创建用户