UIPickerView不同的背景/标题不同的pickerLabel(Swift 3)集的颜色

时间:2017-02-25 22:25:07

标签: swift uipickerview uicolor

我正在尝试根据实际行将特定背景和标题着色设置到同一UIPickerView的不同部分。也就是说,在同一个UIPickerView中有150个元素我需要有不同的颜色来简化(或固定)特定元素的搜索时间。然而,我能找到的唯一相关文章如下:https://makeapppie.com/tag/uipickerview-in-swift/

例如,黑色的行0-19,行20-50的红色......等。 这就是我到目前为止所做的:

func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) ->NSAttributedString?{
    let titleData = PickerTeaArray[row]
    let pickerLabel = UILabel()
    let newSwiftColor = UIColor(red: 250, green: 200, blue: 101)
    let myTitle = NSAttributedString(string: titleData, attributes: [NSForegroundColorAttributeName:newSwiftColor])
    pickerLabel.textAlignment = .left

    return myTitle
}

稍后在代码中,我根据行为简单标签指定了不同的值。

你可以建议去做吗?

1 个答案:

答案 0 :(得分:0)

您发布的代码只需要一次调整。您需要根据row参数值更改颜色。根据您在问题中的陈述,您可以执行以下操作:

func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) ->NSAttributedString?{
    let titleData = PickerTeaArray[row]
    let pickerLabel = UILabel()

    let newSwiftColor: UIColor
    switch row {
        case 0...19:
            newSwiftColor = .black
        case 20...50:
            newSwiftColor = .red
        default:
            newSwiftColor = UIColor(red: 250.0/255.0, green: 200.0/255.0, blue: 101.0/255.0)
    }

    let myTitle = NSAttributedString(string: titleData, attributes: [NSForegroundColorAttributeName:newSwiftColor])
    pickerLabel.textAlignment = .left

    return myTitle
}

根据需要添加和调整case语句,并返回您真正想要的任何颜色。