Подтвердить что ты не робот

Как подклас 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%, чтобы имитировать заполнитель по умолчанию.

4b9b3361

Ответ 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"];

Я думаю, это было бы полезно