在实际开发中有时候我们需要改变UITextField的placeholder文字颜色,但是苹果好像没有提供直接能修改其颜色的属性与方法,所以我们需要一些其他手法来修改UITextField的placeholder文字颜色
第一种:运用富文本
在搜遍了UITextField的属性与方法后,找到了其中attributedPlaceholder的属性
// 文字属性
NSMutableDictionary *attrs = [NSMutableDictionary dictionary];
attrs[NSForegroundColorAttributeName] = [UIColor grayColor];
// NSAttributedString : 带有属性的文字(富文本技术)
NSAttributedString *placeholder = [[NSAttributedString alloc] initWithString:@"手机号" attributes:attrs];
self.textField.attributedPlaceholder = placeholder;
//修改具体每个字的设置
NSMutableAttributedString *placehoder = [[NSMutableAttributedString alloc] initWithString:@"手机号"];
[placehoder setAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]} range:NSMakeRange(0, 1)];
[placehoder setAttributes:@{
NSForegroundColorAttributeName : [UIColor yellowColor],
NSFontAttributeName : [UIFont systemFontOfSize:30]
} range:NSMakeRange(1, 1)];
[placehoder setAttributes:@{NSForegroundColorAttributeName : [UIColor redColor]} range:NSMakeRange(2, 1)];
self.textField.attributedPlaceholder = placehoder;
第二种:重写绘图 自定义UITextField
[self.placeholder drawInRect:CGRectMake(0, 10, rect.size.width, 25) withAttributes:@{
NSForegroundColorAttributeName : [UIColor grayColor],
NSFontAttributeName : self.font}];
第三种:用kvc
[self setValue:self.textColor forKeyPath:@"_placeholderLabel.textColor"];