我已经试过在这个论坛中每个人都回答的两个选项,但是对我没有任何帮助...我尝试覆盖:

- (void)drawPlaceholderInRect:(CGRect)rect

并且:

[self.myTextField setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"];

但是什么也没发生...还是一样的灰色...也许我必须继承一些东西,我不知道...有什么建议吗?

最佳答案

最简单的方法是:

UILabel *placeholderAppearance;
if (@available(iOS 9, *)) {
    placeholderAppearance = [UILabel appearanceWhenContainedInInstancesOfClasses:@[[UITextField class]]];
} else {
    placeholderAppearance = [UILabel appearanceWhenContainedIn:[UITextField class], nil];
}
placeholderAppearance.textColor = [UIColor redColor];


[编辑]
使用此功能后,我知道了另一个错误,上面的代码完成了工作,但是它还将我视图中所有其他标签的颜色重置为默认黑色。为了克服这个问题,我必须对UILabel类进行子类化,并在视图中的所有其他标签中使用我的类。

09-30 20:01