修改UITextField的placeholder文字颜色

在实际开发中有时候我们需要改变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"];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容