如何在SwiftUI中创建自定义单元格?其中每个单元格颜色来自特定的十六进制数列表
我有一个.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] 返回单元 } 我希望列表中有一个完整的单元格数组,其中每个单元格背景都来自列表中的十六进制值。如何在SwiftUI中创建自定义单元格?其中每个单元格颜色来自特定的十六进制数列表,swift,swiftui,Swift,Swiftui,我有一个.txt列表,从中可以得到列表中每个单元格颜色的十六进制值。如何设置每个单元格的值 我尝试在列表中使用ForEach循环进行迭代,但我真的不知道如何使用该循环 这是我在UIKit版本中所需的代码,该版本由HexToColor扩展而成: func tableView\utableview:UITableView,cellforrow在indexPath:indexPath->UITableView单元格{ 让cell=tableView.dequeueReusableCellwithIde
像这样的事情应该会让你开始:
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,而是使用列表控件