how to change the background color in UIPickerView?

孤街醉人 提交于 2019-12-01 11:28:05
Ryan Booker

UPDATE: One simple trick is to set the alpha on some of the subviews. Which one specifically depends on how many components you have, but the code is:

[(UIView*)[[picker subviews] objectAtIndex:2] setAlpha:0.5f];

This will make the dial semi transparent and show through the background colour.


Setting the backgroudColor doesn't appear to do anything. The best I have been able to do so far is set the background colour of individual component rows, which is next to useless as the base colour of the component will remain white.

Ideally I'd like to set the background colour of an each component (i.e. dial).

Saturn

Seems iOS 4.2 doesn't has any subview...

NSLog(@" %@ ", [self.pickerView subviews]); 

returns empty array.

hasan

Finally managed to do it. I try it for a picker view with one component.

  1. set the picker view background color to clear color by wizard or by code as follow:

    Picker1.backgroundColor = [UIColor clearColor];
    
  2. Set alpha value to 0.0f for the picker view subviews numbered 0, 1 and 3. (Don't know why there is subview 2 thought). Do it by code after the first load data for the picker view as follow (it will throw an exception if you do this in the DidViewLoad).

    [(UIView*)[[Picker1 subviews] objectAtIndex:0] setAlpha:0.0f];
    [(UIView*)[[Picker1 subviews] objectAtIndex:1] setAlpha:0.0f];
    [(UIView*)[[Picker1 subviews] objectAtIndex:3] setAlpha:0.0f];
    
  3. Don't forget to clear background color for the label you are sending to the picker view in the viewForRow method.

    lbl.backgroundColor = [UIColor clearColor];
    

On iOS 7 I just drop a custom background image behind it. Didn't have to change anything else.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!