UITextField 的私有屬性 _placeholderLabel 被禁止訪問了

[_textField setValue:self.placeholderColor forKeyPath:@"_placeholderLabel.textColor"];
如果你的代碼通過 KVC 方式修改私有屬性,有 Crash 風(fēng)險。

解決問題

對UITextField創(chuàng)建一個新的分類,例如:

//h文件
UITextField+Placeholder.h
@interface UITextField (Placeholder)
- (void)setPlaceholderColor:(UIColor *)color;
@end
//下面為m文件
#import "UITextField+Placeholder.h"
#import <objc/runtime.h>

@implementation UITextField (Placeholder)

- (void)setPlaceholderColor:(UIColor *)color{
    Ivar ivar =  class_getInstanceVariable([UITextField class], "_placeholderLabel");
    UILabel *placeholderLabel = object_getIvar(self, ivar);
    placeholderLabel.textColor = color;
}
//使用
[self.textFiled setPlaceholderColor:[UIColor redColor]];

@end

這樣項目中有多個地方使用就可以很快替換掉。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,621評論 1 32
  • 1.設(shè)計模式是什么? 你知道哪些設(shè)計模式,并簡要敘述?設(shè)計模式是一種編碼經(jīng)驗,就是用比較成熟的邏輯去處理某一種類型...
    龍飝閱讀 2,294評論 0 12
  • 今天一女性朋友在圈里發(fā)了一段話,意思是說,自己吃完飯下樓溜達(dá),在一輛車前停下來了,把手機(jī)放到車窗上玩起手機(jī)了,并且...
    冰心玉壺0516閱讀 184評論 0 0
  • 荀子曰:“人無禮則不生,事無禮則不成,國無禮則不寧?!惫湃酥Y、守禮,禮是封建社會的基本道德準(zhǔn)則。雖然現(xiàn)代社會中不...
    小雯子的雜貨鋪閱讀 1,018評論 0 2
  • tensorflow環(huán)境和python的環(huán)境不同
    年畫兒閱讀 152評論 0 0

友情鏈接更多精彩內(nèi)容