How do I change the color of the text in a UIPickerView under iOS 7? How do I change the color of the text in a UIPickerView under iOS 7? objective-c objective-c

How do I change the color of the text in a UIPickerView under iOS 7?


There is a function in the delegate method that is more elegant:

Objective-C:

- (NSAttributedString *)pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component{    NSString *title = @"sample title";    NSAttributedString *attString =         [[NSAttributedString alloc] initWithString:title attributes:@{NSForegroundColorAttributeName:[UIColor whiteColor]}];    return attString;}

If you want to change the selection bar colors as well, I found that I had to add 2 separate UIViews to the view containing the UIPickerView, spaced 35 pts apart for a picker height of 180.

Swift 3:

func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {    let string = "myString"    return NSAttributedString(string: string, attributes: [NSForegroundColorAttributeName:UIColor.white])}

Swift 4:

func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {    let string = "myString"    return NSAttributedString(string: string, attributes: [NSAttributedStringKey.foregroundColor: UIColor.white])}

Swift 4.2:

func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {    let string = "myString"    return NSAttributedString(string: string, attributes: [NSAttributedString.Key.foregroundColor: UIColor.white])}

Remember when you use the method: You don't need to implement titleForRowInComponent() as it is never called when using attributedTitleForRow().


Original post here: can I change the font color of the datePicker in iOS7?

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, pickerView.frame.size.width, 44)];    label.backgroundColor = [UIColor grayColor];    label.textColor = [UIColor whiteColor];    label.font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:18];    label.text = [NSString stringWithFormat:@" %d", row+1];    return label;}// number Of Components- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{    return 1;}// number Of Rows In Component- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:   (NSInteger)component{    return 6;}


  1. Go to storyboard
  2. Select PickerView
  3. Go to Identity inspector (3rd tab)
  4. Add User Defined Runtime Attribute
  5. KeyPath = textColor
  6. Type = Color
  7. Value = [Color of you choice]

screenshot