16

如何使用 SDK 7UIPickerView 在 iOS 7 上设置背景颜色并在 iOS 5 和 6 上使用标准选择器?它在 iOS 7 上默认是透明的。

4

6 回答 6

39

有什么问题:

[picker setBackgroundColor:[UIColor whiteColor]];

如果您正在调用它,我假设您有对选择器视图的引用,它是 UIView 的子类,因此backgroundColor是一个有效的属性......

于 2013-10-21T20:52:05.560 回答
9

这对我有用,在 iOS 7.1 中:

[[UIPickerView appearance] setBackgroundColor:[UIColor whiteColor];

这会改变所有选择器的颜色。如果您只希望它在装有 iOS 7 的设备上运行,您可以在它周围加上一个条件。

于 2014-05-01T20:00:06.630 回答
9

我想把它写成评论,但很难阅读:) Sooo....

-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 50, 44)]; // your frame, so picker gets "colored"
    label.backgroundColor = [UIColor lightGrayColor];
    label.textColor = [UIColor blackColor];
    label.font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:18];
    label.text = [NSString stringWithFormat:@"%d",row];

    return label;
}

它也不必只是标签,我认为你也可以在那里插入其他子视图......据我所知,它适用于 iOS7图片在这里

于 2013-10-01T17:02:47.613 回答
8

我在下面添加UIViewUIPickerView代码:

CGRect framePickerView = CGRectMake(0, self.view.frame.size.height, self.view.frame.size.width, 216);
pickerView = [[[UIView alloc] initWithFrame:framePickerView] autorelease];
pickerView.backgroundColor = [UIColor whiteColor];
[self.view addSubview:pickerView];
[pickerView addSubview:picker];

而是代码:

[self.view addSubview:picker];
于 2013-10-01T18:33:02.537 回答
5

即使我设置 UIPickerView.backgorundColor了,但我的背景颜色很奇怪。

删除以下行修复了问题:

UITextField.keyboardAppearance = .dark

或者只是重置keyboardAppearance为默认值,如下所示:

UITextField.keyboardAppearance = .default
于 2018-07-14T13:27:08.580 回答
3

对于任何快速工作并可能使用多个选择器的人:

pickerView1.backgroundColor = UIColor.darkGrayColor()
pickerView2.backgroundColor = UIColor.greenColor()

Xcode 7.3

于 2016-11-25T23:23:57.300 回答