IOS UITextfield占字符顏色

處理文本占字符顏色

越復雜的東西越要封裝,
當我們的額設置的東西只要一次的時候,而且使用的xib我們可以在aweakFromNib中設置,
當我們找這個占字符的先去頭文件查找,attributePlaceholderString

NSMutableDictionary *dic = [NSMutableDictionary dictionary];
    dic[NSForegroundColorAttributeName] = [UIColor whiteColor];
    
    self.attributedPlaceholder = [[NSAttributedString alloc] initWithString:self.placeholder attributes:dic];

快速設置占字符顏色

我們可以使用小面包將頁面分析,查看textfied的內(nèi)容,可以看到
屏幕快照 2019-10-22 上午11.07.31.png

這是看可以看懂field的內(nèi)部,這是我們可以通過kvc進行設置。但是需要知道屬性名字,首先,要獲取屬性名,1可以通過runtime來打印,2,可以用斷點,用斷點我們可以查看到


屏幕快照 2019-10-22 上午11.17.50.png
屏幕快照 2019-10-22 上午11.18.21.png

他有一個placeholderLabel的屬性
這時候我們就可以利用KVC進行設置

 UILabel *placeholderLabel = [self valueForKey:@"placeholderLabel"];
    placeholderLabel.textColor = [UIColor whiteColor];

如果我們想以后都使用可以自定義一個分類

.h
@property UIColor *placeholderColor;

.m
- (void)setPlaceholderColor:(UIColor *)placeholderColor
{
    UILabel *placeholderLabel = [self valueForKey:@"placeholderLabel"];
    placeholderLabel.textColor = placeholderColor;
}
- (UIColor *)placeholderColor
{
    return nil;
}

runtime設置

使用上面的設置方式,要特別注意設置的順序需要先設置占位文字,在設置顏色,因為這個label是懶加載,如果我們沒有設置文字的話,就為nil這時候我們設置顏色是沒有效果的。所以我門完善一下。使用runtime。修改placeholder的set方法,和我們自己的設置的方法交換實現(xiàn).

+ (void)load
{
    // setPlaceholder
    Method setPlaceholderMethod = class_getInstanceMethod(self, @selector(setPlaceholder:));
    Method setXmg_PlaceholderMethod = class_getInstanceMethod(self, @selector(setXmg_Placeholder:));
    
    method_exchangeImplementations(setPlaceholderMethod, setXmg_PlaceholderMethod);
}
- (void)setPlaceholderColor:(UIColor *)placeholderColor
{
    
    // 給成員屬性賦值 runtime給系統(tǒng)的類添加成員屬性
    // 添加成員屬性
    objc_setAssociatedObject(self, @"placeholderColor", placeholderColor, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    
    // 獲取占位文字label控件
    UILabel *placeholderLabel = [self valueForKey:@"placeholderLabel"];
    
    // 設置占位文字顏色
    placeholderLabel.textColor = placeholderColor;
    
}


- (UIColor *)placeholderColor
{
    return objc_getAssociatedObject(self, @"placeholderColor");
}

// 設置占位文字
// 設置占位文字顏色
- (void)setXmg_Placeholder:(NSString *)placeholder
{
    [self setXmg_Placeholder:placeholder];
    
    self.placeholderColor = self.placeholderColor;
}
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

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