设置placeholder的颜色

方法一:自定义UITextField类,重写drawPlaceholderInRect方法

- (void)drawPlaceholderInRect:(CGRect)rect

{

    [self.placeholder drawInRect:CGRectMake(0, 10,rect.size.width, 25) withAttributes:@{

                            NSForegroundColorAttributeName:[UIColor whiteColor],

                                       NSFontAttributeName:self.font

                                                                                    }];

}


方法二:设定属性文字

    // 用NSAttributedString

    NSMutableDictionary *attrs = [NSMutableDictionary dictionary];

    attrs[NSForegroundColorAttributeName] = [UIColor whiteColor];

    NSAttributedString *placeholder = [[NSAttributedString alloc]initWithString:@"手机号" attributes:attrs];

    self.phoneField.attributedPlaceholder = placeholder;

    

    // 用NSMutableAttributedString

    NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc]initWithString:@"手机号"];

    [placeholder setAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor]} range:NSMakeRange(0, 1)];

    [placeholder setAttributes:@{

                                 

                                 NSForegroundColorAttributeName:[UIColor redColor],

                                 NSFontAttributeName:[UIFont systemFontOfSize:18],

                                 NSUnderlineStyleAttributeName:@"1"

                                 

                                 } range:NSMakeRange(1, 1)];

    

    [placeholder setAttributes:@{NSForegroundColorAttributeName:[UIColor yellowColor]} range:NSMakeRange(2, 1)];

    self.phoneField.attributedPlaceholder = placeholder;


方法三:重写UITextField,通过修改隐藏的实例变量的值,通过KVC修改

#import "FLTextField.h"

// 导入头文件

#import <objc/runtime.h>

// 定义宏

static NSString *const FLPlaceholderColorForKeyPath = @"_placeholderLabel.textColor";


@implementation FLTextField


- (void)awakeFromNib

{

//    UILabel *paleceLabel = [self valueForKeyPath:@"_placeholderLabel"];

//    paleceLabel.textColor = [UIColor redColor];

//    [self setValue:[UIColor grayColor] forKeyPath:@"_placeholderLabel.textColor"];

    // 让光标颜色与文字颜色一致

    self.tintColor = self.textColor;

    

    [self resignFirstResponder];    

}


- (BOOL)becomeFirstResponder

{

    [self setValue:[UIColor whiteColor] forKeyPath:FLPlaceholderColorForKeyPath];

    return [super becomeFirstResponder];

}


- (BOOL)resignFirstResponder

{

    [self setValue:[UIColor grayColor] forKeyPath:FLPlaceholderColorForKeyPath];

    return [super resignFirstResponder];

}


// 如何找到隐藏的实例变量

+ (void)initialize

{

    unsigned int count = 0;

   Ivar *ivars =  class_copyIvarList([UITextField class], &count);

    

    for (int i = 0; i< count; i++) {

        // 取出成员变量

        Ivar ivar = *(ivars + i);

        

        // 打印成员变量的值

        FLLog(@"%s",ivar_getName(ivar));

        

    }

    

    // 释放

    free(ivars);

}


@end







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值