Runtime修改UITextField的placeholder
2016-05-14 本文已影响71人
Mr丶炎
![](https://img.haomeiwen.com/i1858529/1bf282c749747d69.png)
这里的输入框里面的placeholder是高亮显示的(白色), 修改placeholder有几种方法,个人觉得Runtime更加简单
Runtime
* 运行时(Runtime)
* 苹果官方一套C语言库
* 能够做很多底层操作(比如隐藏的一些成员变量/成员方法)
+ (void)initialize {
unsigned int count = 0;
// 拷贝出所有的成员变量列表
Ivar *ivars = class_copyIvarList([UITextField class], &count);
for (int i = 0; i < count; i++) {
// 取出成员变量
Ivar ivar = *(ivars + i);
// 打印成员变量
BSLog(@"%s", ivar_getName(ivar));
}
// 释放
free(ivars);
}
取出成员变量, 我们看到有一个_placeholderLabel,这个属性明显就是可以修改字体颜色
![](https://img.haomeiwen.com/i1858529/0f071131b33ed070.png)
我们可以重写这两个方法,监听文本框聚焦
- (void)awakeFromNib {
// 设置光标颜色和文字颜色一致,好想不起作用
self.tintColor = self.textColor;
// 不成为第一响应者
[self resignFirstResponder];
}
/**
* 当前文本框聚焦时就会调用(点击时调用)
*/
- (BOOL)becomeFirstResponder {
[self setValue:self.textColor forKeyPath:@"_placeholderLabel.textColor"];
return [super becomeFirstResponder];
}
/**
* 当前文本框失去焦点时就会调用(没点)
*/
- (BOOL)resignFirstResponder {
[self setValue:[UIColor grayColor] forKeyPath:@"_placeholderLabel.textColor"];
return [super resignFirstResponder];
}