Perseus
Perseus

Reputation: 1588

Custom UIPickerView with Custom Background color

I have created a sample picker-view which will display some details. Setting the Background color using:

_pickerView.backgroundColor = [UIColor redColor]; 

doesn't seems to be working . But I wish I could create a picker view like the below image

enter image description here

What I was trying to do is , the entire PickerView background color should not be white, it should fill with the UIColor which I am giving. Is that possible?? How it can be done ??

Upvotes: 11

Views: 30373

Answers (6)

Filipe Alvarenga
Filipe Alvarenga

Reputation: 71

It is hard to customize a UIPickerView.

You might opt to use it in its default appearance or trying to simulate a UIPickerView using another UIKit component such as UITableView. There are some libs that are using UITableView to simulate a more flexible UIPickerView.

Upvotes: 1

DShah
DShah

Reputation: 9876

Addition to Nina's answer, below are some of the good custom Picker view controls which will be good to use in terms of performance and customizable.

  1. http://www.cocoacontrols.com/platforms/ios/controls/cppickerview
  2. http://www.cocoacontrols.com/platforms/ios/controls/afpickerview
  3. http://www.cocoacontrols.com/platforms/ios/controls/v8horizontalpickerview (Horizontal PickerView)

Upvotes: 26

Derek Ju
Derek Ju

Reputation: 21

I wrote a custom picker view that uses a UITableView as it's starting point. Feel free to customize it however you want.

https://github.com/derekju/DjuPickerView

Upvotes: 2

PJR
PJR

Reputation: 13180

You can change selected color by putting tableview cell in it.

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
UITableViewCell *cell = (UITableViewCell *)view;

if( cell == nil ) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil] autorelease];
    [cell setBackgroundColor:[UIColor redColor]];

    [cell setBounds: CGRectMake(0, 0, cell.frame.size.width -20 , 44)];
    cell.textLabel.text = [self.userNameArray objectAtIndex:row];
    cell.userInteractionEnabled = NO;
}

return cell;
}

Upvotes: 1

Kuldeep
Kuldeep

Reputation: 2589

The API does not provide a way to change the style and color of selection dialer. You can change only inner view of the picker how u want to design. As the UIPickerView don't have the UI_APPEARANCE_SELECTOR.

Check out below link will help you out. Custom iOS UIDatepicker using UIAppearance

Upvotes: 0

Nina
Nina

Reputation: 1699

UIPickerView has subviews. Assigning an image to a view and adding it to the subview at index 2, would change the background of pickerview.

I had had a same kinda problem :-) See my question here!! Customize UIPickerView's Skin with images

Or you can use AFPickerView

Upvotes: 0

Related Questions