我正在尝试根据实际行将特定背景和标题着色设置到同一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
}
稍后在代码中,我根据行为简单标签指定了不同的值。
你可以建议去做吗?
答案 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
语句,并返回您真正想要的任何颜色。