web-dev-qa-db-fra.com

UIPickerView n'autorise pas la modification du nom et de la taille de police via l'attribut `attributTitleForRow ...` du délégué

J'utilise la fonction suivante pour changer la couleur et la taille de la police. La couleur fonctionne, mais le nom et la taille de la police refusent de fonctionner. 

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()])

de l'aide? 

THX.

24
jdleung

J'ai une autre option peut-être utile pour vous .. 

Effectuez tous les travaux nécessitant une vue normale du sélecteur: pour plus d’aide UIPickerView crée dans Swift iOS

Suivez maintenant cette étape: - vous pouvez utiliser la méthode de viewForRow comme ceci 

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
}

Swift 3 mis à jour

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
}

Que ce soit une aide complète pour vous, je l’ai aussi utilisée dans mon projet. 

52
Jogendra.Com

Vous pouvez déclarer la source de données pour pickerview 

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

puis utilisez ce tableau de chaîne comme titre pour la ligne dans la fonction ci-dessous

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
 }
9
L.N.Vu

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

}
1
BennyTheNerd

Swift 4.1/Xcode 9.4.1

Évidemment, vous pouvez sélectionner votre propre police, mais ici, j'utilise System Bold 13.

func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
    let pickerLabel = UILabel()
    pickerLabel.font = UIFont.boldSystemFont(ofSize: 13)
    pickerLabel.textColor = UIColor.black
    pickerLabel.textAlignment = .center
    pickerLabel.text = "PickerView Cell Title"

    return pickerLabel
}
0
drewster

Pour plus de détails sur https://stackoverflow.com/users/4020910/bennythenerd répondre avec UILabel, je voudrais utiliser un peu plus de solution optimisée pour la mémoire qui réutilise les étiquettes:

func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
    let pickerLabel: UILabel
    if let label = view as? UILabel {
        pickerLabel = label
    } else {
        pickerLabel = UILabel()
        pickerLabel.font = UIFont(name: "Rubik-Regular", size: 22)
        pickerLabel.textAlignment = .center
    }
    pickerLabel.text = pickerData[row] //This is your string
    return pickerLabel
}
0
Tanel Teemusk