首页 > 解决方案 > SwiftUI 中无法使用对象属性创建颜色

问题描述

我有一个 SwiftUI iOS 应用程序,它从本地 JSON 文件中提取数据。

一切正常,除了在一个视图中,我无法使用传递到视图中的对象的属性来创建新的Color.

struct CategoryItem: View {
    var item: Item
    var body: some View {
        VStack(alignment: .leading) {
            ZStack {
                Rectangle()
                    .foregroundColor(Color(red: item.backgroundColor[0] / 255, green: 242 / 255, blue: 242 / 255))

出于某种原因,item.backgroundColor[0]如果我使用 打印出来,返回正确String(item.backgroundColor[0]),所以值在那里,但计算抛出错误。我怀疑这与Color计算属性有关,但我不确定为什么会发生错误。

任何帮助将不胜感激!

标签: iosswiftswiftui

解决方案


我想到了。

事实证明,即使静态整数(例如)表示为整数,也item.backgroundColor[0]需要将其指定为 a 。Double()255

解决方案是Double()使用这样的函数将所有内容包装起来:

func colorsFromProperty(colors: [Double]) -> Color {
  return Color(red: Double(colors[0] / 255), green: Double(colors[1] / 255), blue: Double(colors[2] / 255))
}

推荐阅读