我们知道iOS13中出现暗黑模式,当黑色模式是UIDatePicker 时间字体颜色显示是白色的,这时我们就要修改时间字体颜色,查看官方文档中发现没有修改时间字体颜色的api,
下面是我们根据RunTime 循环获取属性的名字 通过键值对的方式修改字体颜色
当UIDatePicker初始化的时候复制到下面就OK了
unsigned int outCount;
int i;
objc_property_t *pProperty = class_copyPropertyList([UIDatePicker class], &outCount);
for (i = outCount -1; i >= 0; i--)
{
// 循环获取属性的名字 property_getName函数返回一个属性的名称
NSString *getPropertyName = [NSString stringWithCString:property_getName(pProperty[i]) encoding:NSUTF8StringEncoding];
NSString *getPropertyNameString = [NSString stringWithCString:property_getAttributes(pProperty[i]) encoding:NSUTF8StringEncoding];
if([getPropertyName isEqualToString:@"textColor"])
{
[self.datePicker setValue:[UIColor blackColor] forKey:@"textColor"];
}
NSLog(@"%@====%@",getPropertyNameString,getPropertyName);
}
SEL selector = NSSelectorFromString(@"setHighlightsToday:");
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[UIDatePicker instanceMethodSignatureForSelector:selector]];
BOOL no = NO;
[invocation setSelector:selector];
[invocation setArgument:&no atIndex:2];
[invocation invokeWithTarget:self.datePicker];