美文网首页
巧设UITextView的PlaceHolder

巧设UITextView的PlaceHolder

作者: 一生谦卦 | 来源:发表于2018-01-30 18:42 被阅读0次

    之前如果要求使UITextView展示placeholder,总觉得很麻烦,为什么UITextField就有placeholder属性而UITextView却没有。前段时间学习runtime的过程中打印了UITextView的实例变量列表,惊喜的发现列表中有一个变量_placeholderLabel,然后就有了这篇博客。

    获取实例变量

    unsigned int count;
    Ivar *ivarList = class_copyIvarList([UITextView class], &count);
    for (unsigned int i =0; i <count; i ++) {
          Ivar myIvar = ivarList[i];
          const char *ivarName = ivar_getName(myIvar);
          NSLog(@"\n%@",[NSString stringWithUTF8String:ivarName]);
     }
    

    上述代码打印后可以发现有一个_placeholderLabel属性,然后我们就是用kvc来使UITextView展示placeholder

    实现方法

    _textView = [[UITextView alloc]init];
    _textView.font = SetFont(13);
    _textView.textColor = SetColor(0x666666);
    _textView.layer.borderColor = SetColor(0xe6e6e6).CGColor;
    _textView.layer.borderWidth = 1;
    [Utile makeCorner:5 view:_textView];
    //创建一个label
    UILabel *placeholderLabel = [[UILabel alloc]init];
    placeholderLabel.font = SetFont(13);
    placeholderLabel.textColor = SetColor(0x999999);
    placeholderLabel.text = @"请输入备注";
    [_textView addSubview:placeholderLabel];
    //最关键的一句
    [_textView setValue:placeholderLabel forKey:@"_placeholderLabel"];
    
    效果.png

    展示效果!!!

    相关文章

      网友评论

          本文标题:巧设UITextView的PlaceHolder

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