I use the following func to change the font color and font size, the color works but the font name and font size refuse to work.
func pickerView(pickerVi
You can declare the datasource for pickerview
let arrDataSource:[String] = ["row 1","row 2","row 3"]
then use this array of string as title for row in below function
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
}
I have a another option may be it helpfull for you..
Do all work that need for normal picker view : for more help UIPickerView make in Swift iOS
Now follow this step : - you can use method of viewForRow like this
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
}
Updated 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
}
Updated Swift 5
func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView
{
let pickerLabel = UILabel()
pickerLabel.textColor = UIColor.white
pickerLabel.text = "PickerView Cell Title"
// pickerLabel.font = UIFont(name: pickerLabel.font.fontName, size: 15)
pickerLabel.font = UIFont.boldSystemFont(ofSize: 20) // In this use your custom font
pickerLabel.textAlignment = NSTextAlignment.center
return pickerLabel
}
May be it help full for you, I also used this in my project.
To further elaborate on https://stackoverflow.com/users/4020910/bennythenerd answer with UILabel I'd go with a bit more memory optimised solution that reuses the labels:
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
}
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
}
Swift 4.1 / Xcode 9.4.1
Obviously you can select you own font, but here I'm using 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
}