在項目中我們有時會遇到讓我們改變placeholder的顏色,簡單介紹一下改變placeholder的顏色的幾種方法
利用屬性字符串,UITextField有這樣一個屬性attributedPlaceholder,可以讓我們定制placeholder的屬性
<pre>let placeHolderTextAttr = NSMutableAttributedString(string: "請輸入您的名字");
placeHolderTextAttr.addAttributes([NSForegroundColorAttributeName:UIColor.redColor()], range: NSMakeRange(0, placeHolderTextAttr.length))
self.textField.attributedPlaceholder = placeHolderTextAttr;
</pre>-
如果用xib或SB的話,可以在xib中設(shè)置user Defined Runtime Attributes
keyPath設(shè)置成_placeholderLabel.textColor type設(shè)置成Color,需要注意的是,設(shè)置之前一定要先選中textField
屏幕快照 2016-09-09 07.35.37.png 用extension和KVC去做,由于以上2種寫法只針對某一個textField,如果有多個textField需要設(shè)置的話,顯得比較麻煩,用extension的話就簡單多了
<pre>
extension UITextField{
@IBInspectable var placeHolderColor: UIColor? {
get {
return self.placeHolderColor
}
set {
if let placeHolderLabel = self.valueForKey("placeholderLabel") as? UILabel {
placeHolderLabel.textColor = newValue!;
} ;
}
}
}</pre>在OC中extension是不能添加實現(xiàn)的這時我們可以用分類去實現(xiàn)這個功能
<pre>
@interface UITextField (SCPlaceHolder)
@property (nonatomic,strong)IBInspectable UIColor *sc_placeHolderColor;
@end
@implementation UITextField (SCPlaceHolder)
<code>-</code> (void)setSc_placeHolderColor:(UIColor *)sc_placeHolderColor{
((UILabel *)[self valueForKey:@"placeholderLabel"]).textColor = sc_placeHolderColor;
}
<code>-</code> (UIColor *)sc_placeHolderColor{
return ((UILabel *)[self valueForKey:@"placeholderLabel"]).textColor;
}
@end
</pre>
