Размер шрифта в PickerView меняется соответственно iOS Swift - PullRequest
0 голосов
/ 30 октября 2019

должно выглядеть следующим образом В pickerView я хочу изменить размер шрифта заголовка, так как при прокрутке выбранный шрифт заголовка строки будет иметь большой размер шрифта и выше, выбранный размер шрифта заголовка будет уменьшаться и будет таким же для нижевыбранная строка.

 import UIKit

Vc:

class ViewController: UIViewController {
    @IBOutlet weak var pickerView: UIPickerView!
    var pickerTitle = ["10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00"]. // time to display in pickerView

var fontSize = [4,6,8,10,12,14,16,18,20,22,24,26,24,22,20,18,16,14,12,10,8,6,4,2] // font size when view is loaded and when I scroll I need to change the font size so this won't work I guess
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    pickerView.delegate = self
    pickerView.dataSource = self

    pickerView.reloadAllComponents()
    pickerView.selectRow(11, inComponent: 0, animated: true)
}
}

источник данных и удаление для pickerView:

 extension ViewController: UIPickerViewDelegate,UIPickerViewDataSource {
func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return pickerTitle.count
}


func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
    let pickerLabel = UILabel()
    let titleData = pickerTitle[row]

    let myTitle = NSAttributedString(string: titleData, attributes: [NSAttributedString.Key.font:UIFont(name: "Georgia", size: CGFloat(fontSize[row]))!,NSAttributedString.Key.foregroundColor:UIColor.black])
    pickerLabel.attributedText = myTitle

    pickerLabel.textAlignment = .right
        return pickerLabel
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    for var i in 0...row{
        print(i)
    }

    for var i in row..<pickerTitle.count{
        print(i)
    }
    pickerView.reloadAllComponents()
}   
}

1 Ответ

0 голосов
/ 30 октября 2019

Не уверен, каковы ваши требования и что вы делаете в коде. Но я могу понять, что вы хотите увеличить размер шрифта для выбранного заголовка в pickerView, а остальные невыбранные заголовки остаются меньшими;тогда вот код: (если нет, уточните, пожалуйста)

extension ViewController: UIPickerViewDelegate,UIPickerViewDataSource {

    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return pickerTitle.count
    }

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        pickerView.reloadAllComponents()
    }

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

        var label = view as! UILabel?
        if label == nil {
            label = UILabel()
            label?.textAlignment = .center
        }
        switch component {
        case 0:

            label?.text = pickerTitle[row]
            if(pickerView.selectedRow(inComponent: 0) == row){
                label?.font = UIFont(name: "Georgia", size: 26)
            }
            return label!

        default:
            return label!
        }

    }
}
...