Как я могу изменить цвет заполнителя UITextField? - PullRequest
1 голос
/ 28 марта 2012

Я попробовал два варианта, на которые все отвечают на этом форуме, но у меня ничего не работает ... Я попытался переопределить:

- (void)drawPlaceholderInRect:(CGRect)rect

, а также:

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

но ничего не происходит ... Все тот же серый цвет ... Может быть, я должен что-то унаследовать, я не знаю ... Любое предложение?

Ответы [ 3 ]

4 голосов
/ 04 апреля 2013

самый простой способ сделать это:

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

[Изменено] После использования этого я узнал еще одну ошибку, вышеупомянутый сделал работу, но он также сбросил цвет всех других меток в моем представлении на Default Black. Затем, чтобы преодолеть это, я должен был создать подкласс класса UILabel и использовать мой класс во всех других ярлыках, на мой взгляд.

1 голос
/ 28 марта 2012

См. drawPlaceholderInRect: из UITextField.Вам необходимо создать подкласс UITextField и переопределить этот метод для настройки графического контекста с желаемым цветом текста и вызова супер-реализации.

К моменту вызова этого метода текущий графический контекст уже настроен со средой по умолчаниюи цвет текста для рисования.В вашем переопределенном методе вы можете дополнительно настроить текущий контекст и затем вызвать super, чтобы сделать фактический рисунок или сделать рисунок самостоятельно.Если вы визуализируете текст самостоятельно, вы не должны вызывать super.

0 голосов
/ 24 июля 2014

В iOS6 вы можете использовать атрибутивный заполнитель:

textfield.attributedPlaceholder = [[NSAttributedString alloc] initWithString:textfield.placeholder attributes:@{NSForegroundColorAttributeName: [UIColor redColor]}];
...