Как создать подкласс UITextField и переопределить drawPlaceholderInRect для изменения цвета заполнителя

У меня есть 3 UITextField с установленным текстом-заполнителем. В одном из UITextField я хочу, чтобы текст заполнителя был красным.

Теперь, после поиска в Google, лучший способ сделать это - создать подкласс UITextField и переопределить drawPlaceholderInRect .

Как создать подкласс и переопределить drawPlaceholderInRect ? Я не нашел примеров кода или руководств по этому поводу, и я ' m новичок в разработке objective-c и iOS, поэтому его сложно решить.

Ответ:

Создан новый класс objective-c под названием CustomUITextFieldPlaceholder , который является подклассом UITextField . В CustomUITextFieldPlaceholder.m поместите следующий код

 @implementation CustomUITextFieldPlaceholder

- (void)drawPlaceholderInRect:(CGRect)rect {
    // Set colour and font size of placeholder text
    [[UIColor redColor] setFill];
    [[self placeholder] drawInRect:rect withFont:[UIFont systemFontOfSize:12]];
}

@end

Для реализации вышеизложенного в вашем проекте

#import "CustomUITextFieldPlaceholder.h"

и

IBOutlet CustomUITextFieldPlaceHolder *txtName;

. Примечание. Это работает, и я считаю, что это правильная практика, однако я не тестировал ее полностью. Надеюсь, этот пример поможет другим в моей ситуации.

Изменить:

Изменено

[[UIColor redColor] setFill];

на

[[UIColor colorWithRed:255.0 green:0.0 blue:0.0 alpha:0.7] setFill];

Чтобы я мог установить непрозрачность на 70%, чтобы имитировать заполнитель по умолчанию.

17
задан Shmidt 10 July 2014 в 15:07
поделиться

0 ответов