2015-03-24 3 views
5

Как я могу изменить цвет своего выбора?Изменение цвета UIPicker

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

+0

Изменить цвет что: шрифт, фон, выбранный элемент, невыбранные пункты? –

ответ

17

Взгляните: http://makeapppie.com/tag/uipickerview-in-swift/

Если вы хотите изменить цвет заголовка каждого элемента можно реализовать:

func pickerView(pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? { 
    let titleData = pickerData[row] 
    var myTitle = NSAttributedString(string: titleData, attributes: [NSFontAttributeName:UIFont(name: "Georgia", size: 15.0)!,NSForegroundColorAttributeName:UIColor.whiteColor()]) 
    return myTitle 
} 

Swift 3:

func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? { 
    let titleData = pickerData[row] 
    let myTitle = NSAttributedString(string: titleData!, attributes: [NSFontAttributeName:UIFont(name: "Georgia", size: 15.0)!,NSForegroundColorAttributeName:UIColor.white]) 
    return myTitle 
} 
+0

Это сделало именно то, что мне было нужно, и позволило мне использовать белый текст в режиме выбора на черном фоне. Спасибо –

+0

@Youri Nooijen, отлично подходит для меня, спасибо. –

2

Если вы хочу больше управление настройка каждого элемента в сборщике ...

Использование UIPickerViewDelegate's "viewForRow" способ.

func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView { 

    var label: UILabel 
    if let view = view as? UILabel { label = view } 
    else { label = UILabel() } 

    label.textColor = UIColor.blue 
    label.textAlignment = .center 
    label.font = UIFont(name: "My-Custom-Font", size: 20) // or UIFont.boldSystemFont(ofSize: 20) 
    label.adjustsFontSizeToFitWidth = true 
    label.minimumScaleFactor = 0.5 
    label.text = getTextForPicker(atRow: row) // implemented elsewhere 

    return label 
} 

Очевидно, что вид, который вы возвращаете, может быть более сложным, чем просто UILabel.

0

Swift 4,0

func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? { 
    let titleData = arrayOfPickerData[row] 
    let myTitle = NSAttributedString(string: titleData, attributes: [NSAttributedStringKey.font:UIFont(name: "Georgia", size: 15.0)!,NSAttributedStringKey.foregroundColor:UIColor.white]) 
    return myTitle 
} 
Смежные вопросы