相信大家已经在网上看过很多次了,具体的做法我这边就直接用代码代替了,这里主要说一下,我在使用中遇见的一个问题,以及解决方案,希望能够给遇见同样问题的小伙伴,提供一个解决问题的办法。
添加占位符的核心代码就是利用私有属性“_placeholderLabel”和KVC。
// 添加占位符label
[self.textView addSubview:self.placeHolderLabel];
[self.textView setValue:self.placeHolderLabel forKey:@"_placeholderLabel"];
placeHolderLabel
的getter
方法
- (UILabel *)placeHolderLabel{
if (!_placeHolderLabel) {
_placeHolderLabel = [[UILabel alloc] init];
_placeHolderLabel.font = self.textView.font; //这里也可以设置和textView不同的font
_placeHolderLabel.numberOfLines = 0;
_placeHolderLabel.textColor = [UIColor yd_colorD8D8D8];
_placeHolderLabel.text = _placeHolder;
[_placeHolderLabel sizeToFit];
}
return _placeHolderLabel;
}
我这边遇见的问题是,设置完之后,placeHolderLabel
在textView
中的位置偏上,也就是占位字符串上半部分被遮挡,没有达到自己的预期。解决方法是为textView
显式设置下font
属性。
// ??: 这块貌似必须显示设置textView的font属性,否则placeholderLabel位置会向上偏移
self.textView.font = [UIFont systemFontOfSize:14];
[self.textView addSubview:self.placeHolderLabel];
[self.textView setValue:self.placeHolderLabel forKey:@"_placeholderLabel"];
如果有小伙伴和我遇见一样的问题,可以尝试一下。