Как подклас UITextField и переопределить drawPlaceholderInRect, чтобы изменить цвет закладок
У меня есть 3 UITextField
с набором текста заполнителя. На одном из UITextField
я хочу, чтобы текст заполнителя был красным.
Теперь после googling кажется, что лучший способ сделать это - подкласс UITextField и переопределить drawPlaceholderInRect
.
Как перейти к подклассу и переопределению drawPlaceholderInRect
? Я не нашел примеров кода или учебников по этому вопросу, и я новичок в разработке 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;
Примечание. Это работает, и я считаю, что это правильная практика, однако я не полностью ее протестировал. Надеюсь, этот пример поможет другим в моей ситуации.
Edit:
Измененный
[[UIColor redColor] setFill];
для
[[UIColor colorWithRed:255.0 green:0.0 blue:0.0 alpha:0.7] setFill];
Чтобы я мог установить непрозрачность на 70%, чтобы имитировать заполнитель по умолчанию.
Ответы
Ответ 1
Чтобы ответить на конкретный вопрос, так работает подкласс:
// CustomTextField.h
@interface CustomTextField : UITextField {
}
@end
Здесь, как переопределить метод:
@implementation
- (CGRect)placeholderRectForBounds:(CGRect)bounds {
return CGRectMake(x,y,width,height);
}
@end
Однако я не думаю, что метод, который вы хотите переопределить. Я думаю, что это то, что вы ищете:
@implementation
- (void)drawPlaceholderInRect:(CGRect)rect {
// Your drawing code.
}
@end
Ответ 2
[yourTextfield setValue:[UIColor colorWithRed:62.0/255.0f green:62.0/255.0f blue:62./255.0f alpha:1.0f] forKeyPath:@"_placeholderLabel.textColor"];
Я думаю, это было бы полезно
Ответ 3
Подкласс не изменит цвет. Я предложил работу здесь.
UITextField цвет заполнителя белый iOS 5?