zoukankan      html  css  js  c++  java
  • iOS-改变UITextField的Placeholder颜色的三种方式

    转自:http://blog.csdn.net/mazy_ma/article/details/51775670

    有时,UITextField自带的Placeholder的颜色太浅或者不满足需求,所以需要修改,而UITextField没有直接的属性去修改Placeholder的颜色,所以只能通过其他间接方式去修改。

    例如:系统默认的Placeholder颜色太浅

    图1

    需要加深颜色,或者改变颜色

    图2

    方法一:通过attributedPlaceholder属性修改Placeholder颜色

        CGFloat viewWidth  = self.view.bounds.size.width;
        CGFloat textFieldX = 50;
        CGFloat textFieldH = 30;
        CGFloat padding    = 30;
    
        UITextField *textField = [[UITextField alloc] init];
        textField.frame = CGRectMake(textFieldX, 100, viewWidth - 2 * textFieldX, textFieldH);
        textField.borderStyle = UITextBorderStyleRoundedRect; // 边框类型
        textField.font = [UIFont systemFontOfSize:14];
        // 就下面这两行是重点
        NSAttributedString *attrString = [[NSAttributedString alloc] initWithString:@"请输入占位文字" attributes:
        @{NSForegroundColorAttributeName:[UIColor redColor],
                     NSFontAttributeName:textField.font
             }];
        textField.attributedPlaceholder = attrString;
        [self.view addSubview:textField];

    方法二:通过KVC修改Placeholder颜色

        UITextField *textField1 = [[UITextField alloc] init];
        textField1.frame = CGRectMake(textFieldX, CGRectGetMaxY(textField.frame) + padding, viewWidth - 2 * textFieldX, textFieldH);
        textField1.borderStyle = UITextBorderStyleRoundedRect;
        textField1.placeholder = @"请输入占位文字";
        textField1.font = [UIFont systemFontOfSize:14];
        // "通过KVC修改占位文字的颜色"
        [textField1 setValue:[UIColor greenColor] forKeyPath:@"_placeholderLabel.textColor"];
        [self.view addSubview:textField1];

    方法三:通过重写UITextField的drawPlaceholderInRect:方法修改Placeholder颜色

    1、自定义一个TextField继承自UITextField
    2、重写drawPlaceholderInRect:方法
    3、在drawPlaceholderInRect方法中设置placeholder的属性

    // 重写此方法
    -(void)drawPlaceholderInRect:(CGRect)rect {
        // 计算占位文字的 Size
        CGSize placeholderSize = [self.placeholder sizeWithAttributes:
                                  @{NSFontAttributeName : self.font}];
    
        [self.placeholder drawInRect:CGRectMake(0, (rect.size.height - placeholderSize.height)/2, rect.size.width, rect.size.height) withAttributes:
        @{NSForegroundColorAttributeName : [UIColor blueColor],
                     NSFontAttributeName : self.font}];
    }

    总结:
    1、当我们使用纯代码创建UITextField时,用第二种方法(KVC)修改占位文字颜色是最便捷的 。
    2、当我们使用XIB或者Storyboard创建UITextField时,通过自定义UITextField,修改占位文字颜色是最适合的。
    3、我们也可以在第三种重写方法中,通过结合第二种方法中的KVC修改属性来实现。

  • 相关阅读:
    CSS特效(9)——图片倒影效果
    CSS特效(8)——单行居中,多行居左,超过两行用省略号(绝对定位)
    CSS特效(7)——单行居中,多行居左,超过两行用省略号
    CSS特效(6)——使用 mix-blend-mode 制作文字背景图
    CSS特效(5)——使用 background-clip 制作文字背景图
    CSS特效(4)——使用 background-blend-mode 制作 hover 效果
    CSS特效(3)——target伪类实现tab切换
    CSS特效(2)——input radio、label实现tab切换
    三国志·魏书·牵招传
    vue初体验
  • 原文地址:https://www.cnblogs.com/wanghang/p/6298813.html
Copyright © 2011-2022 走看看