我知道这个问题已经出现了,但是使用xCode 7和iOS9.2可以在UIDatePicker上更改“今天”日期的字体颜色吗?
[self.dpData setValue:[UIColor colorWithRed:111/255.0f green:113/255.0f blue:121/255.0f alpha:1.0f] forKeyPath:@"setHighlightsToday"];
我试过这个并且它崩溃了,所以我知道这不起作用。
我有其他任何选项,或者我真的需要构建自己的DatePicker?
提前致谢。
答案 0 :(得分:7)
更安全/更简单的方法是简单地设置键的值" highlightToday"。这是一个Swift 2.2示例:
datePicker.setValue(UIColor.whiteColor(), forKey: "textColor")
datePicker.setValue(false, forKey: "highlightsToday")
答案 1 :(得分:4)
到目前为止,我使用了相同的Richardo方法,但是它使用的私有api总是不可用,或者Apple可能会拒绝它。 我刚刚更改了我的代码(就像它的hacky和丑陋)只是将日期选择器更改为另一种模式并返回 - 这会导致Today颜色获得之前设置的textColor。
selectedColor = [UIColor whiteColor];
[self.TimerPicker setValue:selectedColor forKeyPath:@"textColor"];
[self.TimerPicker setDatePickerMode:UIDatePickerModeDate];
[self.TimerPicker setDatePickerMode:UIDatePickerModeDateAndTime];
对我来说足够好了。
答案 2 :(得分:1)
通过更多搜索我找到了解决方案。
[_dpData setValue:[UIColor colorWithRed:111/255.0f green:113/255.0f blue:121/255.0f alpha:1.0f] forKeyPath:@"textColor"];
SEL selector = NSSelectorFromString( @"setHighlightsToday:" );
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature :
[UIDatePicker
instanceMethodSignatureForSelector:selector]];
BOOL no = NO;
[invocation setSelector:selector];
[invocation setArgument:&no atIndex:2];
[invocation invokeWithTarget:_dpData];
使用此解决方案,我们可以毫无问题地更改文本的颜色(即使是今天的日期)。
答案 3 :(得分:1)
即使对于 iOS 13.4 或 14,实际给出的答案仍然是实际的。崩溃的原因是您只能为经典(轮子)样式的日期选择器设置这些参数:
datePicker.setValue(UIColor.whiteColor(), forKey: "textColor")
datePicker.setValue(false, forKey: "highlightsToday")
因此,如果设备安装了 iOS 13.4 或更高版本,它将使用 Compact 样式。但较旧的 iOS 版本将使用 Wheels 样式。
因此,要解决 iOS 13.4 或更高版本的问题,您应该添加基于 UIDatePickerStyle 的条件(从 13.4 开始可用)。像这样:
if #available(iOS 13.4, *) {
let style = self.startDatePicker.datePickerStyle
if style == .wheels {
self.startDatePicker.setValue(UIColor.red, forKey: "textColor")
self.startDatePicker.setValue(false, forKey: "highlightsToday")
}
} else {
self.startDatePicker.setValue(UIColor.red, forKey: "textColor")
self.startDatePicker.setValue(false, forKey: "highlightsToday")
}
另一种方法是使用经典日期选择器样式 - 通过在 StoryBoard 构建器中明确设置其样式:
答案 4 :(得分:0)
仔细阅读本课程的文档以及它的父类,它说它仍然不可能
是的,你应该自己做,因为有了物品选择器,它是可能的。
这对于Apple来说真的很愚蠢