【发布时间】:2013-03-04 20:00:01
【问题描述】:
我的UIDatePicker的背景是黑色的(因为整个屏幕的背景可能是黑色的),但是我想要这个UIDatePicker的背景是白色的。
有什么方法可以改变背景颜色而不继承它?
【问题讨论】:
标签: objective-c ios5
我的UIDatePicker的背景是黑色的(因为整个屏幕的背景可能是黑色的),但是我想要这个UIDatePicker的背景是白色的。
有什么方法可以改变背景颜色而不继承它?
【问题讨论】:
标签: objective-c ios5
datePickerName.backgroundColor = [UIColor grayColor];
【讨论】:
目标 C
datePicker.backgroundColor = [UIColor greenColor]
SWIFT
DatePicker.backgroundColor = UIColor.blueColor()
DatePicker.setValue(UIColor.greenColor(), forKeyPath: "textColor")
DatePicker.setValue(0.8, forKeyPath: "alpha")
【讨论】:
iOS 14 更新
iOS 14 后这样设置背景颜色
datePicker.backgroundColor = <# your bg color #>
不再起作用了。
所以我现在使用键值编码方法:
datePicker.setValue(<# your bg color #> , forKey: "backgroundColor")
【讨论】:
datePicker.backgroundColor 适用于 iOS 14。但您必须将其放在 picker.preferredDatePickerStyle = .wheels 之后。
iOS 14 更新
看起来datePicker.backgroundColor 在 iOS 14 中不起作用。它起作用了。但是你必须把它放在preferredDatePickerStyle设置之后:
let picker = UIDatePicker()
if #available(iOS 13.4, *) {
picker.preferredDatePickerStyle = .wheels
}
picker.backgroundColor = .red
【讨论】:
我遇到了同样的问题。我刚刚创建了一个 UIView 并将其放在 UIDatePicker 后面
datePickerBackground = [[UIView alloc] initWithFrame:myDatePickerView.frame];
datePickerBackground.backgroundColor = [UIColor whiteColor];
[self.view insertSubview:datePickerBackground belowSubview:myDatePickerView];
我声明了 UIView *datePickerBackground;在我的课上。我重用了同一个 ViewController,所以我在 unLoad 时将 datePickerBackground 设置为 nil。
【讨论】:
简单地按照这些步骤进行
首先,您在 .h 文件中设置 delegate,例如:
UIPickerViewDelegate、UIPickerViewDataSource
然后在您创建 datepicker
的位置添加那行YourDatePicker = [[UIDatePicker alloc] init];
YourDatePicker.backgroundColor=[UIColor whiteColor];
在您的情况下,颜色为白色,但您可以随意更改。
【讨论】:
通常,我会说UIDatePicker inherits from UIView,并且您可以通过像yourDatePickerRef.backgroundColor = [UIColor whiteColor]; 这样的行以编程方式设置背景,但事实证明 -- according to this related question -- UIDatePicker 有许多子视图 在里面 其中一些是背景视图。
您需要将这些子视图的背景颜色设置为白色(而不是清晰或当前设置的任何颜色)。
是的,这有点痛苦,但这使得 UIDatePicker 在能够自定义外观方面成为一个潜在的强大对象。
【讨论】:
为什么不在选择器后面添加一个普通的UIView。将视图的背景颜色设置为白色。为视图提供与选择器相同的框架。
注意(基于您对迈克尔回答的评论):
挖掘UIDatePicker 的私有子视图是有风险的。它随时可能破裂。几乎可以保证,您的解决方案会因在不使用 AM/PM 的区域设置的设备上使用的日期选择器而中断,因为选择器将只有两个组件而不是三个。
【讨论】: