巧设UITextView的PlaceHolder

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

获取实例变量

unsigned int count;
Ivar *ivarList = class_copyIvarList([UITextView class], &count);
for (unsigned int i =0; i 

上述代码打印后可以发现有一个_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)