在WatchKit中访问系统颜色

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

我正在尝试为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目标时,该应用程序会中断。

我希望有一种方法,而不是找到正确的颜色并对其进行硬编码。

uikit swiftui watchkit
1个回答
0
投票

[查看文档,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))
  }
© www.soinside.com 2019 - 2024. All rights reserved.