how to change the background color in UIPickerView

2019-02-19 18:23发布

I want to change the background color in UIPickerView, Is it possible?

4条回答
狗以群分
2楼-- · 2019-02-19 18:58

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).

查看更多
该账号已被封号
3楼-- · 2019-02-19 18:59

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

查看更多
家丑人穷心不美
4楼-- · 2019-02-19 19:00

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];
    
查看更多
神经病院院长
5楼-- · 2019-02-19 19:14

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

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

returns empty array.

查看更多
登录 后发表回答