2012-03-28 7 views
1

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

- (void)drawPlaceholderInRect:(CGRect)rect

, а также:

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

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

ответ

4

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

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

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

+0

спасибо! еще одно: возможно ли изменить цвет синего вертикального штрих-кода? – sergiocg90

+0

Не знаю об этом, но я хотел бы добавить что-то к вышеуказанной работе с заполнителем. После использования этого я узнал еще одну ошибку, описанная выше выполнила эту работу, но также сбросила цвет всех других ярлыков в моем представлении по умолчанию Black. Затем, чтобы преодолеть это, мне пришлось подклассифицировать класс UILabel и использовать мой класс во всех других ярлыках, на мой взгляд. –

1

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

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

+0

Спасибо, теперь я знаю, как это действительно работает – sergiocg90

0

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

textfield.attributedPlaceholder = [[NSAttributedString alloc] initWithString:textfield.placeholder attributes:@{NSForegroundColorAttributeName: [UIColor redColor]}]; 
Смежные вопросы