2015-03-24 17 views
5

Come posso cambiare il colore del mio selettore?Cambia colore UIPicker

Non desidero modificare il carattere o il testo. Il mio raccoglitore è popolare e funziona esattamente come lo voglio io, quello che voglio fare è cambiare il colore dal nero al mio bianco personalizzato.

+0

Cambiare il colore di ciò: il carattere, lo sfondo, la voce selezionata, gli elementi non selezionati? –

risposta

17

Date un'occhiata a: http://makeapppie.com/tag/uipickerview-in-swift/

Se si desidera cambiare il colore del titolo di ogni elemento è possibile implementare:

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

Questo ha fatto esattamente ciò di cui avevo bisogno e mi ha permesso di usare il testo bianco in una vista di selezione su uno sfondo nero. Grazie –

+0

@Youri Nooijen, ottimo per me, grazie. –

2

Se voglio altro controllo personalizzazione di ogni elemento nel selettore ...

Utilizzare UIPickerViewDelegate's "viewForRow" metodo.

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 
} 

Ovviamente la vista che stai restituendo potrebbe essere più complessa di una semplice 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 
}