前几天写的关于UITextField博客太乱了,今天重新整理了一下。
一 .有时,UITextField自带的Placeholder的颜色太浅或者不满足需求,所以需要修改,而UITextField没有直接的属性去修改Placeholder的颜色,所以只能通过其他间接方式去修改。
简单用法:
[textFieldsetValue:[UIColorredColor]forKeyPath:@"_placeholderLabel.textColor"];
[textFieldsetValue:[UIFontboldSystemFontOfSize:16]forKeyPath:@"_placeholderLabel.font"];
例如:系统默认的Placeholder颜色太浅
需要加深颜色,或者改变颜色
1. 通过attributedPlaceholder属性修改Placeholder颜色
3.通过重写UITextField的drawPlaceholderInRect:方法修改Placeholder颜色
① 自定义一个TextField继承自UITextField
② 重写drawPlaceholderInRect:方法
③ 在drawPlaceholderInRect方法中设置placeholder的属性
总结:
① 当我们使用纯代码创建UITextField时,用第二种方法(KVC)修改占位文字颜色是最便捷的 。
② 当我们使用XIB或者Storyboard创建UITextField时,通过自定义UITextField,修改占位文字颜色是最适合的。
③ 我们也可以在第三种重写方法中,通过结合第二种方法中的KVC修改属性来实现。
二. 但是有时我们项目需求是动态设置placeholderLabel的颜色。下面用四种方法,动态的设置placeholderLabel的颜色
1. addTarget
2. 代理-->遵守协议,自己做自己的代理
3. 通知
4. 重写文本框特有的方法
以上内容是平时开发公司项目时,可能遇到的奇葩的需求,以往每次遇到这样的需求总是上网查阅答案,今天自己写下这篇博客,是对以前知识的总结。同时方便以后完成同样的开发需求。