文本框的占位文字属性设置的4种方法

- (void)awakeFromNib
{
    // 设置输入时文字的颜色
    self.textColor = [UIColor whiteColor];

    // 设置鼠标光标的颜色
    self.tintColor = [UIColor whiteColor];

    // 设置带属性的占位文字的颜色
    // 方法1
    self.attributedPlaceholder = [[NSAttributedString alloc] initWithString:self.placeholder attributes:@{NSForegroundColorAttributeName : [UIColor grayColor]}];
    // 或
    NSMutableDictionary *attrs = [NSMutableDictionary dictionary];
    attrs[NSForegroundColorAttributeName] = [UIColor grayColor];
    self.attributedPlaceholder = [[NSAttributedString alloc] initWithString:self.placeholder attributes:attrs];

    // 方法2
    NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:self.placeholder];
    [attrStr addAttribute:NSForegroundColorAttributeName value:[UIColor grayColor] range:NSMakeRange(0, self.placeholder.length)];
    self.attributedPlaceholder  =attrStr;

    // 富文本的扩展,可实现图文混排
    NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] init];

    // 第一段文字
    NSAttributedString *str1 = [[NSAttributedString alloc] initWithString:self.placeholder];
    [attrString appendAttributedString:str1];

    // 第二段图片
    NSTextAttachment *attachment = [[NSTextAttachment alloc] init];
    attachment.image = [UIImage imageNamed:@"nav_coin_icon_click"];
    NSAttributedString *str2 = [NSAttributedString attributedStringWithAttachment:attachment];
    [attrString appendAttributedString:str2];

    // 第三段文字
    NSAttributedString *str3 = [[NSAttributedString alloc] initWithString:@"您好"];
    [attrString appendAttributedString:str3];

    self.attributedPlaceholder = attrString;

     // 方法3,调用drawPlaceholderInRect:方法实现

    // 方法4,利用运行时的实现原理,获取输入框中占位符的属性名,从而给其赋值
    UILabel *label = [self valueForKeyPath:@"placeholderLabel"];
    label.textColor = [UIColor grayColor];
    // 或
    [self setValue:[UIColor grayColor] forKeyPath:@"placeholderLabel.textColor"];
}

/**
 *  方法3,调用drawPlaceholderInRect:方法实现
 */
- (void)drawPlaceholderInRect:(CGRect)rect
{
    NSMutableDictionary *attrs = [NSMutableDictionary dictionary];
    attrs[NSForegroundColorAttributeName] = [UIColor grayColor];
    attrs[NSFontAttributeName] = self.font;

    // 方式一
    CGRect bounds = self.bounds;
    bounds.origin.y = (self.height - self.font.lineHeight) * 0.5;

    [self.placeholder drawInRect:bounds withAttributes:attrs];

    // 方式二
    CGPoint point;
    point.x = 0;
    point.y = (self.height - self.font.lineHeight) * 0.5;

    [self.placeholder drawAtPoint:point withAttributes:attrs];
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值