如何在SwiftUI中创建自定义单元格?其中每个单元格颜色来自特定的十六进制数列表

如何在SwiftUI中创建自定义单元格?其中每个单元格颜色来自特定的十六进制数列表,swift,swiftui,Swift,Swiftui,我有一个.txt列表,从中可以得到列表中每个单元格颜色的十六进制值。如何设置每个单元格的值 我尝试在列表中使用ForEach循环进行迭代,但我真的不知道如何使用该循环 这是我在UIKit版本中所需的代码,该版本由HexToColor扩展而成: func tableView\utableview:UITableView,cellforrow在indexPath:indexPath->UITableView单元格{ 让cell=tableView.dequeueReusableCellwithIde

我有一个.txt列表,从中可以得到列表中每个单元格颜色的十六进制值。如何设置每个单元格的值

我尝试在列表中使用ForEach循环进行迭代,但我真的不知道如何使用该循环

这是我在UIKit版本中所需的代码,该版本由HexToColor扩展而成:

func tableView\utableview:UITableView,cellforrow在indexPath:indexPath->UITableView单元格{ 让cell=tableView.dequeueReusableCellwithIdentifier:TableViewCell,for:indexPath as!TableViewCell let label:String=hexColorNames[indexPath.row] cell.celllable.text=标签 cell.backgroundColor=UIColor.FromHextoiColorHexColorNames[indexPath.row] 返回单元 } 我希望列表中有一个完整的单元格数组,其中每个单元格背景都来自列表中的十六进制值。

像这样的事情应该会让你开始:

import SwiftUI

func hexStringToUIColor (hex:String) -> Color {
    var cString:String = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()

    if (cString.hasPrefix("#")) {
        cString.remove(at: cString.startIndex)
    }

    if ((cString.count) != 6) {
        return Color.gray
    }

    var rgbValue:UInt64 = 0
    Scanner(string: cString).scanHexInt64(&rgbValue)

    return Color(
        red: Double((rgbValue & 0xFF0000) >> 16) / 255.0,
        green: Double((rgbValue & 0x00FF00) >> 8) / 255.0,
        blue: Double(rgbValue & 0x0000FF) / 255.0
    )
}

struct ContentView: View {
    let colors: [String] = ["#d3d3d3", "#7f7f7f", "#000000", "#FFFFFF"]

    var body: some View {
        List {
            ForEach(colors, id: \.self) { color in
                Text(color.description.capitalized)
                    .background(hexStringToUIColor(hex: color))
            }
        }.listRowInsets(EdgeInsets())
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

不要使用UITableView,而是使用列表控件