如何在Swift 3的UIPickerView中更改字体大小?

如何在拾取器视图中更改字体大小? 我已经阅读了很多关于这个的问题,但没有一个在Swift 3中。我有三个select器视图; 前两个有两列,并有相同的数据源和委托。 最后一个有一列,有不同的数据源和委托。 我无法将前两个select器视图中的文本合并为一个字符。 如何在UIPickerView中缩小字体大小,并根据需要调整select器视图行高? 谢谢。

class ViewController: UIViewController { //MARK: Properties @IBOutlet weak var layoutLengthPicker: UIPickerView! @IBOutlet weak var layoutWidthPicker: UIPickerView! @IBOutlet weak var trackPicker: UIPickerView! let layoutLengthPickerDelegate = DimensionsPickerDelegate() let layoutWidthPickerDelegate = DimensionsPickerDelegate() let trackPickerDelegate = TrackPickerDelegate() override func viewDidLoad() { super.viewDidLoad() layoutLengthPicker.delegate = layoutLengthPickerDelegate layoutLengthPicker.dataSource = layoutLengthPickerDelegate layoutWidthPicker.delegate = layoutWidthPickerDelegate layoutWidthPicker.dataSource = layoutWidthPickerDelegate trackPicker.delegate = trackPickerDelegate trackPicker.dataSource = trackPickerDelegate // Do any additional setup after loading the view, typically from a nib. } //MARK: Actions override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } class DimensionsPickerDelegate: NSObject, UIPickerViewDataSource, UIPickerViewDelegate { let feet = ["0 Ft.", "1 Ft.", "2 Ft.", "3 Ft.", "4 Ft.", "5 Ft.", "6 Ft.", "7 Ft.", "8 Ft.", "9 Ft.", "10 Ft.", "11 Ft.", "12 Ft.", "13 Ft.", "14 Ft.", "15 Ft.", "16 Ft.", "17 Ft.", "18 Ft.", "19 Ft.", "20 Ft.", "21 Ft.", "22 Ft.", "23 Ft.", "24 Ft.", "25 Ft.", "26 Ft.", "27 Ft.", "28 Ft.", "29 Ft.", "30 Ft.", "31 Ft.", "32 Ft.", "33 Ft.", "34 Ft.", "35 Ft.", "36 Ft.", "37 Ft.", "38 Ft.", "39 Ft.", "40 Ft.", "41 Ft.", "42 Ft.", "43 Ft.", "44 Ft.", "45 Ft.", "46 Ft.", "47 Ft.", "48 Ft.", "49 Ft.", "50 Ft.", "51 Ft.", "52 Ft.", "53 Ft.", "54 Ft.", "55 Ft.", "56 Ft.", "57 Ft.", "58 Ft.", "59 Ft.", "60 Ft.", "61 Ft.", "62 Ft.", "63 Ft.", "64 Ft.", "65 Ft.", "66 Ft.", "67 Ft.", "68 Ft.", "69 Ft.", "70 Ft.", "71 Ft.", "72 Ft.", "73 Ft.", "74 Ft.", "75 Ft.", "76 Ft.", "77 Ft.", "78 Ft.", "79 Ft.", "80 Ft.", "81 Ft.", "82 Ft.", "83 Ft.", "84 Ft.", "85 Ft.", "86 Ft.", "87 Ft.", "88 Ft.", "89 Ft.", "90 Ft.", "91 Ft.", "92 Ft.", "93 Ft.", "94 Ft.", "95 Ft.", "96 Ft.", "97 Ft.", "98 Ft.", "99 Ft.", "100 Ft."] let inches = ["0 In.", "1 In.", "2 In.", "3 In.", "4 In.", "5 In.", "6 In.", "7 In.", "8 In.", "9 In.", "10 In.", "11 In.", "12 In."] func numberOfComponents(in pickerView: UIPickerView) -> Int { return 2 } func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { if component == 0 { return feet.count } else { return inches.count} } func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { if component == 0 {return feet[row]} else {return inches[row]} } } class TrackPickerDelegate: NSObject, UIPickerViewDataSource, UIPickerViewDelegate { let manufacturers = ["Atlas True Track", "Atlas Code 100", "Atlas Code 83", "Bachmann Nickel Silver", "Bachmann Steel Alloy", "Kato", "Life-Like Trains Code 100", "LIfe-Like Trains Power-Loc", "Peco Code 100", "Peco Code 83", "Peco Code 75", "Shinohara Code 100", "Shinohara Code 70", "Walthers"] func numberOfComponents(in pickerView: UIPickerView) -> Int { return 1 } func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { return manufacturers.count } func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { return manufacturers[row] } } 

试试这个Swift 3.x:

用适当的值填充字体名称,颜色,大小和数据数组。

 func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView { var pickerLabel: UILabel? = (view as? UILabel) if pickerLabel == nil { pickerLabel = UILabel() pickerLabel?.font = UIFont(name: "<Your Font Name>", size: <Font Size>) pickerLabel?.textAlignment = .center } pickerLabel?.text = <Data Array>[row] pickerLabel?.textColor = UIColor.blue return pickerLabel! } 

编辑:

对于多个组件,可以这样做:

 if component == 0 { var label: UILabel? = (view as? UILabel) label.text = <Your Arr>[row] return label }else { return anotherLabel } 

输出:

在这里输入图像说明

希望能帮助到你!!!