美文网首页
修改UITextField的placeholder颜色

修改UITextField的placeholder颜色

作者: 阿拉斯加的狗 | 来源:发表于2016-08-28 04:07 被阅读31次
    • 使用属性
    @property(nonatomic,copy)   NSAttributedString     *attributedPlaceholder;
    
    // 文字属性
    NSMutableDictionary *attrs = [NSMutableDictionary dictionary];
    attrs[NSForegroundColorAttributeName] = [UIColor grayColor];
    
    // NSAttributedString : 带有属性的文字(富文本技术)
    NSAttributedString *placeholder = [[NSAttributedString alloc] initWithString:@"手机号" attributes:attrs];
    self.phoneField.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.phoneField.attributedPlaceholder = placehoder;
    
    • 重写方法
    - (void)drawPlaceholderInRect:(CGRect)rect
    {
        [self.placeholder drawInRect:CGRectMake(0, 10, rect.size.width, 25) withAttributes:@{
                                                           NSForegroundColorAttributeName : [UIColor grayColor],
                                                           NSFontAttributeName : self.font}];
    }
    
    • 使用KVC
    [self setValue:[UIColor grayColor] forKeyPath:@"_placeholderLabel.textColor"];
    

    运行时(Runtime)

    • 苹果官方一套C语言库
    • 能做很多底层操作(比如访问隐藏的一些成员变量\成员方法....)
    • 访问成员变量举例
    unsigned int count = 0;
    
    // 拷贝出所有的成员变量列表
    Ivar *ivars = class_copyIvarList([UITextField class], &count);
    
    for (int i = 0; i<count; i++) {
        // 取出成员变量
        // Ivar ivar = *(ivars + i);
        Ivar ivar = ivars[i];
    
        // 打印成员变量名字
        XMGLog(@"%s", ivar_getName(ivar));
    }
    
    // 释放
    free(ivars);
    
    ivars.png
    - (void)awakeFromNib
    {
        // 设置光标颜色和文字颜色一致
        self.tintColor = self.textColor;
        
        // 不成为第一响应者
        [self resignFirstResponder];
    }
    
    /**
     * 当前文本框聚焦时就会调用
     */
    - (BOOL)becomeFirstResponder
    {
        // 修改占位文字颜色
        [self setValue:self.textColor forKeyPath:@"_placeholderLabel.textColor"];
        return [super becomeFirstResponder];
    }
    
    /**
     * 当前文本框失去焦点时就会调用
     */
    - (BOOL)resignFirstResponder
    {
        // 修改占位文字颜色
        [self setValue:[UIColor grayColor] forKeyPath:@"_placeholderLabel.textColor"];
        return [super resignFirstResponder];
    }
    

    相关文章

      网友评论

          本文标题:修改UITextField的placeholder颜色

          本文链接:https://www.haomeiwen.com/subject/jkmtettx.html