美文网首页
textField placeHolder 字体颜色 位置

textField placeHolder 字体颜色 位置

作者: 小的小碰撞 | 来源:发表于2017-05-18 11:39 被阅读0次

    修改UITextField的placeholder颜色

    • 使用属性
    @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
    UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
    NSString *holderText = @"请输入密码!";
    NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:holderText];
    [placeholder addAttribute:NSForegroundColorAttributeName
                  value:[UIColor redColor]
                  range:NSMakeRange(0, holderText.length)];
    [placeholder addAttribute:NSFontAttributeName
                  value:[UIFont boldSystemFontOfSize:16]
                  range:NSMakeRange(0, holderText.length)];
    textField.attributedPlaceholder = placeholder;
    [cell.contentView addSubview:textField];
    

    相关文章

      网友评论

          本文标题:textField placeHolder 字体颜色 位置

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