2014-12-13 13 views
21

Io uso la seguente funzione per cambiare il colore del carattere e la dimensione del carattere, il colore funziona ma il nome del font e la dimensione del font si rifiutano di funzionare.UIPickerView non consentirà di cambiare il nome e la dimensione del carattere tramite `attributeTitleForRow ...`

func pickerView(pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? 

var myTitle = NSAttributedString(string: titleData, attributes: [NSFontAttributeName:UIFont(name: "Arial-BoldMT", size: 45)!, NSForegroundColorAttributeName:UIColor.whiteColor()]) 

aiuto?

Thx.

+0

Non è solo in Swift ... –

+0

Stesso problema su iOS 9 beta 5 – Quanlong

risposta

49

Ho un un'altra opzione potrebbe essere che utile per voi ..

fare tutto il lavoro che hanno bisogno per il normale vista picker: per ulteriori informazioni UIPickerView make in Swift iOS

Ora seguite questo passo: - è possibile utilizzare il metodo di viewForRow come questo

func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView!) -> UIView 
{ 
    var pickerLabel = UILabel() 
    pickerLabel.textColor = UIColor.blackColor() 
    pickerLabel.text = "PickerView Cell Title" 
    // pickerLabel.font = UIFont(name: pickerLabel.font.fontName, size: 15) 
    pickerLabel.font = UIFont(name: "Arial-BoldMT", size: 15) // In this use your custom font 
    pickerLabel.textAlignment = NSTextAlignment.Center 
    return pickerLabel 
} 

aggiornato Swift 3

func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView!) -> UIView 
{ 
    let pickerLabel = UILabel() 
    pickerLabel.textColor = UIColor.black 
    pickerLabel.text = "PickerView Cell Title" 
    // pickerLabel.font = UIFont(name: pickerLabel.font.fontName, size: 15) 
    pickerLabel.font = UIFont(name: "Arial-BoldMT", size: 15) // In this use your custom font 
    pickerLabel.textAlignment = NSTextAlignment.center 
    return pickerLabel 
} 

Può essere un aiuto completo per te, l'ho usato anche nel mio progetto.

+0

Hay, l'hai provato? –

+1

Sì, i tuoi codici funzionano. Ma ho bisogno di ottenere i dati del titolo ricalcolato da pickerView (pickerView, titleForRow: row, forComponent: component). A proposito, come posso inserire i codici nel commento? – jdleung

+0

'pickerView (_: titleForRow: forComponent:)'
'pickerView (_: attributedTitleForRow: forComponent:)'
'pickerView (_: viewForRow: forComponent: reusingView:)'
i tre di cui sopra può anche mostrare il contenuto pickerView ma non dovrei usarli allo stesso tempo, in qualche modo li uso due di loro. Adesso usa solo l'ultimo e il problema risolto.
Grazie a tutti. – jdleung

9

È possibile dichiarare l'origine dati per pickerView

let arrDataSource:[String] = ["row 1","row 2","row 3"] 

quindi utilizzare questo array di stringa come titolo per riga nella funzione qui sotto

func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView!) -> UIView 

{ 
    let pickerLabel = UILabel() 
    pickerLabel.textColor = UIColor.blackColor() 
    pickerLabel.text = arrDataSource[row] 
    pickerLabel.font = UIFont(name: pickerLabel.font.fontName, size: 15) 
    //pickerLabel.font = UIFont(name: "Arial-BoldMT", size: 15) // In this use your custom font 
    pickerLabel.textAlignment = NSTextAlignment.Center 
    return pickerLabel 
} 
0

SWIFT 3

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

    var string = "" 

    let pickerLabel = UILabel() 
    pickerLabel.textColor = UIColor.white 
    pickerLabel.text = string 
    pickerLabel.font = UIFont(name: "Rubik-Regular", size: 22) // In this use your custom font 
    pickerLabel.textAlignment = .center 

    return pickerLabel 

} 
Problemi correlati