【问题标题】:Xcode - UIDatePicker background colorXcode - UIDatePicker 背景颜色
【发布时间】:2013-03-04 20:00:01
【问题描述】:

我的UIDatePicker的背景是黑色的(因为整个屏幕的背景可能是黑色的),但是我想要这个UIDatePicker的背景是白色的。

有什么方法可以改变背景颜色而不继承它?

【问题讨论】:

    标签: objective-c ios5


    【解决方案1】:
    datePickerName.backgroundColor = [UIColor grayColor];
    

    【讨论】:

      【解决方案2】:

      目标 C

      datePicker.backgroundColor = [UIColor greenColor]
      

      SWIFT

      DatePicker.backgroundColor = UIColor.blueColor()
      DatePicker.setValue(UIColor.greenColor(), forKeyPath: "textColor")
      DatePicker.setValue(0.8, forKeyPath: "alpha")
      

      【讨论】:

        【解决方案3】:

        iOS 14 更新

        iOS 14 后这样设置背景颜色

        datePicker.backgroundColor = <# your bg color #> 
        

        不再起作用了。

        所以我现在使用键值编码方法:

        datePicker.setValue(<# your bg color #> , forKey: "backgroundColor")
        

        【讨论】:

        • datePicker.backgroundColor 适用于 iOS 14。但您必须将其放在 picker.preferredDatePickerStyle = .wheels 之后。
        【解决方案4】:

        iOS 14 更新

        看起来datePicker.backgroundColor 在 iOS 14 中不起作用。它起作用了。但是你必须把它放在preferredDatePickerStyle设置之后:

        let picker = UIDatePicker()
        if #available(iOS 13.4, *) {
            picker.preferredDatePickerStyle = .wheels
        }
        picker.backgroundColor = .red
        

        【讨论】:

          【解决方案5】:

          我遇到了同样的问题。我刚刚创建了一个 UIView 并将其放在 UIDatePicker 后面

              datePickerBackground = [[UIView alloc] initWithFrame:myDatePickerView.frame];
              datePickerBackground.backgroundColor = [UIColor whiteColor];
              [self.view insertSubview:datePickerBackground belowSubview:myDatePickerView];
          

          我声明了 UIView *datePickerBackground;在我的课上。我重用了同一个 ViewController,所以我在 unLoad 时将 datePickerBackground 设置为 nil。

          【讨论】:

            【解决方案6】:

            简单地按照这些步骤进行

            • 首先,您在 .h 文件中设置 delegate,例如:

              UIPickerViewDelegate、UIPickerViewDataSource

            • 然后在您创建 datepicker

              的位置添加那行

              YourDatePicker = [[UIDatePicker alloc] init];
              YourDatePicker.backgroundColor=[UIColor whiteColor];

            • 在您的情况下,颜色为白色,但您可以随意更改。

            【讨论】:

              【解决方案7】:

              通常,我会说UIDatePicker inherits from UIView,并且您可以通过像yourDatePickerRef.backgroundColor = [UIColor whiteColor]; 这样的行以编程方式设置背景,但事实证明 -- according to this related question -- UIDatePicker 有许多子视图 在里面 其中一些是背景视图。

              您需要将这些子视图的背景颜色设置为白色(而不是清晰或当前设置的任何颜色)。

              是的,这有点痛苦,但这使得 UIDatePicker 在能够自定义外观方面成为一个潜在的强大对象。

              【讨论】:

              • 谢谢!!我刚刚浏览了这个子视图的所有层。我需要更改对象索引 - 4、10 和 16 以获得正确的颜色。我希望苹果不会改变顺序...:P
              【解决方案8】:

              为什么不在选择器后面添加一个普通的UIView。将视图的背景颜色设置为白色。为视图提供与选择器相同的框架。

              注意(基于您对迈克尔回答的评论):

              挖掘UIDatePicker 的私有子视图是有风险的。它随时可能破裂。几乎可以保证,您的解决方案会因在不使用 AM/PM 的区域设置的设备上使用的日期选择器而中断,因为选择器将只有两个组件而不是三个。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2014-08-01
                • 2012-12-28
                • 2018-08-12
                • 2018-06-17
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多