相关疑难解决方法(0)

如何将UITextField子类化并覆盖drawPlaceholderInRect以更改占位符颜色

我有一个UITextField带占位符文本集的3 .其中一个UITextField我希望占位符文本为红色.

现在谷歌搜索后,似乎最好的方法是子类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
Run Code Online (Sandbox Code Playgroud)

在您的项目中实现上述内容

#import "CustomUITextFieldPlaceholder.h"
Run Code Online (Sandbox Code Playgroud)

IBOutlet CustomUITextFieldPlaceHolder *txtName;
Run Code Online (Sandbox Code Playgroud)

注意:这是有效的,我相信是正确的做法,但我还没有完全测试它.希望这个例子在我的情况下帮助其他人.

编辑:

[[UIColor redColor] setFill];
Run Code Online (Sandbox Code Playgroud)

对于

[[UIColor colorWithRed:255.0 green:0.0 blue:0.0 alpha:0.7] setFill];
Run Code Online (Sandbox Code Playgroud)

这样我就可以将不透明度设置为70%来模仿默认占位符.

iphone subclass objective-c uitextfield ios

17
推荐指数
1
解决办法
1万
查看次数

标签 统计

ios ×1

iphone ×1

objective-c ×1

subclass ×1

uitextfield ×1