Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在Swift中更改UIPickerView中的字体大小?_Ios_Swift_Uipickerview - Fatal编程技术网

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

Ios 如何在Swift中更改UIPickerView中的字体大小?,ios,swift,uipickerview,Ios,Swift,Uipickerview,如何在选择器视图中更改字体大小?我读过很多关于这方面的问题,但是Swift 3中没有一个。我有三种观点;前两个具有两列,并且具有相同的数据源和委托。最后一个具有一列,并且具有不同的数据源和委托。我无法用一个字符将前两个选择器视图中的文本匹配。如果需要,如何在UIPickerView中缩小字体大小并调整选择器视图行高度?谢谢 class ViewController: UIViewController { //MARK: Properties @IBOutlet weak var layou

如何在选择器视图中更改字体大小?我读过很多关于这方面的问题,但是Swift 3中没有一个。我有三种观点;前两个具有两列,并且具有相同的数据源和委托。最后一个具有一列,并且具有不同的数据源和委托。我无法用一个字符将前两个选择器视图中的文本匹配。如果需要,如何在UIPickerView中缩小字体大小并调整选择器视图行高度?谢谢

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!
}
func pickerView(pickerView:UIPickerView,viewForRow行:Int,forComponent组件:Int,重用视图:UIView?->UIView{
变量选择器标签:UILabel?=(查看为?UILabel)
如果pickerLabel==nil{
pickerLabel=UILabel()
pickerLabel?.font=UIFont(名称:,大小:)
选择器标签?.textAlignment=.center
}
pickerLabel?.text=[行]
pickerLabel?.textColor=UIColor.blue
返回选择器标签!
}
编辑:

对于多个组件,可以执行以下操作:

if component == 0 {
     var label: UILabel? = (view as? UILabel)
     label.text = <Your Arr>[row]
     return label
}else {
     return anotherLabel
}
如果组件==0{
变量标签:UILabel?=(查看为?UILabel)
label.text=[行]
退货标签
}否则{
返回另一个标签
}
输出:

希望对你有帮助

更新Swift 4.2

我设法使用了下面的代码:

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: 25)
        pickerLabel?.textAlignment = .center
    }
    pickerLabel?.text = <Data Array>[component][row]
    pickerLabel?.textColor = UIColor(named: "Your Color Name")

    return pickerLabel!
}
func pickerView(pickerView:UIPickerView,viewForRow行:Int,forComponent组件:Int,重用视图:UIView?->UIView{
变量选择器标签:UILabel?=(查看为?UILabel)
如果pickerLabel==nil{
pickerLabel=UILabel()
pickerLabel?.font=UIFont(名称:“您的字体名称”,大小:25)
选择器标签?.textAlignment=.center
}
pickerLabel?.text=[组件][行]
pickerLabel?.textColor=UIColor(名为:“您的颜色名称”)
返回选择器标签!
}

希望对您有所帮助

注意,您将使用此
viewForRow
委托方法,而不是
titleForRow
委托方法。@rmaddy这是一个问题吗?我做了一个演示,效果很好。@Imad如何在两列选择器视图中使用它?我有一个
英尺
阵列和一个
英寸
阵列。在
viewForRow
中,如果组件==0{return feet[row]}或者{return inches[row]},我当前有
。如何在
pickerLabel?中实现这一点。text=[row]
?谢谢。@Imad还有一个好奇的问题,你能在选择器视图中更改字体颜色吗?@W.Cook字体颜色检查我的更新答案。接下来是两列选择器,您可以这样做:如果组件==0{return label},则返回另一个标签。