美文网首页
设置UITextField的placeholder颜色

设置UITextField的placeholder颜色

作者: BrightFuture | 来源:发表于2016-09-10 14:59 被阅读0次

自定义UITextField改变placeholder颜色

  • 利用runTime获得UITextFi所有成员变量(只能获得传入类的所有成员变量,不包括父类),需要引入#import <objc/runtime.h>
unsigned int count = 0;
Ivar *ivars = class_copyIvarList([UITextField class], &count);
for (int i = 0; i < count; i++) {
   Ivar ivar = *(ivars + i);
   NSLog(@"%s",ivar_getName(ivar));
 }
// 利用上述方法,可以找到任何一个类的所有成员变量
// 通过kvc改变_placeholderLabel的文字颜色
// 释放内存
free(ivars);
  • 如果要求TextField在选中和非选中时的placeholder颜色不同,但是api没有提供这两种状态的方法,而我们又需要在textFiled内部实现这个需求。可以联想到,当textFiled被选中时,它一定是FirstResponse,进而联想到重写becomeFirstResponse和resignFirstResponse来实现
// 点击时(成为第一响应者)
 - (BOOL)becomeFirstResponder { 
   // 设置占位符颜色
   [self setValue:self.selectedColor ? self.selectedColor : self.textColor forKeyPath:@"_placeholderLabel.textColor"];
   // 设置光标颜色 
   [self setTintColor:self.selectedColor ? self.selectedColor : self.textColor]; return [super becomeFirstResponder];;
}
// 默认状态下(放弃第一响应者)
 - (BOOL)resignFirstResponder {
   [self setValue:self.defaultColor ? self.defaultColor : self.textColor forKeyPath:@"_placeholderLabel.textColor"];
   return [super resignFirstResponder];
}

相关文章

网友评论

      本文标题:设置UITextField的placeholder颜色

      本文链接:https://www.haomeiwen.com/subject/cvbyettx.html