Как создать пользовательские ячейки в SwiftUI?где каждый цвет ячейки из определенного списка шестнадцатеричных чисел - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть список .txt, где я получаю шестнадцатеричные значения для цвета каждой ячейки в списке.Как установить значение для каждой ячейки?

Я пытался выполнить итерации внутри списка с помощью цикла ForEach, но на самом деле я не знаю, как использовать этот цикл.

Этокод, который мне нужен в версии UIKit (fromHexToColor () является расширением UIColor):

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath) as! TableViewCell
        let label: String = hexColorNames[indexPath.row]

        cell.cellLabel.text = label
        cell.backgroundColor = UIColor().fromHexToUIColor(hexColorNames[indexPath.row])

        return cell

    }

Я ожидаю, что внутри списка будет целый массив ячеек, где каждый фон ячейки является шестнадцатеричным значением в списке, это версия ожидаемого результата UIKit

1 Ответ

0 голосов
/ 25 сентября 2019

Что-то вроде этого должно помочь вам:

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()
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...