web-dev-qa-db-ja.com

UIPickerViewでは、デリゲートの `attributedTitleForRow ...`を使用してフォント名とサイズを変更することはできません

次のfuncを使用してフォントの色とフォントサイズを変更します。色は機能しますが、フォント名とフォントサイズが機能しません。

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

何か助け?

THX。

25
jdleung

私はあなたのために役立つかもしれない別のオプションがあります。

通常のピッカービューに必要なすべての作業を行います。詳細については UIPickerView make in Swift iOS

次に、この手順に従います。-viewForRowのメソッドを使用できます

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

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
}

それはあなたの助けになるかもしれませんが、私はこれを私のプロジェクトでも使用しました。

53
Jogendra.Com

Pickerviewのデータソースを宣言できます

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

次に、この文字列の配列を関数の下の行のタイトルとして使用します

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

スイフト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

明らかに、自分のフォントを選択できますが、ここでは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

https://stackoverflow.com/users/4020910/bennythenerd UILabelでさらに詳しく説明するには、ラベルを再利用するメモリ最適化ソリューションをもう少し使用します。

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