相信大家已經(jīng)在網(wǎng)上看過(guò)很多次了嫁审,具體的做法我這邊就直接用代碼代替了征绸,這里主要說(shuō)一下傻丝,我在使用中遇見(jiàn)的一個(gè)問(wèn)題甘有,以及解決方案,希望能夠給遇見(jiàn)同樣問(wèn)題的小伙伴葡缰,提供一個(gè)解決問(wèn)題的辦法亏掀。
添加占位符的核心代碼就是利用私有屬性“_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; //這里也可以設(shè)置和textView不同的font
_placeHolderLabel.numberOfLines = 0;
_placeHolderLabel.textColor = [UIColor yd_colorD8D8D8];
_placeHolderLabel.text = _placeHolder;
[_placeHolderLabel sizeToFit];
}
return _placeHolderLabel;
}
我這邊遇見(jiàn)的問(wèn)題是,設(shè)置完之后滤愕,placeHolderLabel
在textView
中的位置偏上温算,也就是占位字符串上半部分被遮擋,沒(méi)有達(dá)到自己的預(yù)期间影。解決方法是為textView
顯式設(shè)置下font
屬性注竿。
// ??: 這塊貌似必須顯示設(shè)置textView的font屬性,否則placeholderLabel位置會(huì)向上偏移
self.textView.font = [UIFont systemFontOfSize:14];
[self.textView addSubview:self.placeHolderLabel];
[self.textView setValue:self.placeHolderLabel forKey:@"_placeholderLabel"];
如果有小伙伴和我遇見(jiàn)一樣的問(wèn)題魂贬,可以嘗試一下巩割。