【问题标题】:How to set the background color of UIPickerView on iOS 7 using SDK 7?如何使用 SDK 7 在 iOS 7 上设置 UIPickerView 的背景颜色?
【发布时间】:2013-10-07 22:39:43
【问题描述】:

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

【问题讨论】:

  • 我会使用 - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view with custom view with background color跨度>
  • 但它适用于所有版本的 iOS。我只需要 iOS 7(已对问题进行了更正)。

标签: iphone ios ios7 uipickerview


【解决方案1】:

有什么问题:

[picker setBackgroundColor:[UIColor whiteColor]];

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

【讨论】:

  • 有时候就这么简单
  • 这在 iOS 7 中对我不起作用。选择器的背景继续从它后面的视图继承/混合颜色。
  • 嗯,刚刚创建了一个新项目,其中只有一个带有选择器的 UIViewController。将视图和选取器的背景颜色设置为黑色,然后在 viewDidLoad 中将选取器视图设置为白色,它按预期工作。尝试的事情:1。将颜色设置为红色而不是白色,更容易验证它实际上是在设置颜色。 2.在设置颜色的地方设置断点,确保它被调用。 3. 确保你没有在其他任何地方设置它。
  • 我使用picker.backgroundColor = [UIColor whiteColor];但是是的。
  • 这是真的。直截了当:)
【解决方案2】:

我想把它写成评论,但它很难阅读:) 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

【讨论】:

  • 我已经尝试了提供的代码,但它不起作用。我还不知道为什么。使用picker.delegate = self;
  • 哪里失败了?它只显示透明选择器吗?另外,您是否在 .h 文件中包含 UIPickerViewDelegate 和 UIPickerViewDataSource ?
  • 嗯,您是否从代码中删除了 pickerView:titleForRow:forComponent: ?它必须是 titleForRow 或 viewForRow。不要忘记实现您的其他委托方法(numberOfComponents 和 numberOfRowInComponent)
  • 我正在尝试在UIPickerView 下添加UIView,因为我需要在iOS 5 和6 上使用标准UIPickerView
  • 嗯,也许您可​​以在这里找到一些灵感stackoverflow.com/questions/7848766/… 只需找到您客户的操作系统版本并拆分您的代码以支持旧版本
【解决方案3】:

这对我有用,在 iOS 7.1 中:

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

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

【讨论】:

    【解决方案4】:

    我在UIPickerView 下添加了UIView 代码:

    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];
    

    【讨论】:

      【解决方案5】:

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

      删除以下行修复了问题:

      UITextField.keyboardAppearance = .dark
      

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

      UITextField.keyboardAppearance = .default
      

      【讨论】:

      • 从来没有会想到设置keyboardAppearance会导致我的pickerView背景颜色不起作用。谢谢!!
      • 这为我解决了。我有我的 UITextField 子类,在那个子类中我正在设置键盘外观。这适用于使用普通键盘的文本字段。但这确实与使用 UIPicker 作为输入的文本字段混淆,使得 UIPicker 的背景无法设置。仅供参考:很有趣,使用 UIDatePicker 的文本字段,UIDatePicker 的背景颜色是可设置的。
      【解决方案6】:

      对于任何使用 swift 并可能使用多个选择器的人:

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

      Xcode 7.3

      【讨论】:

        猜你喜欢
        • 2013-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-18
        • 2013-10-04
        • 1970-01-01
        相关资源
        最近更新 更多