设置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

// 定义宏

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







你可能感兴趣的:(iOS开发)