媒介
在年夜家日常平凡的開辟中,有時刻會碰到配景深色的界面上須要添加TextField,TextField默許的占位色彩也是深灰色,比擬好看清,這時候候就須要修正展位文字的色彩,可是體系沒有供給響應的辦法,那末就須要我們本身來自界說了
修正後的後果

話不多說,上面上代碼:
// .h文件 #import <UIKit/UIKit.h> @interface UITextField (Placeholder) @property UIColor *placeholderColor; @end
// .m文件
#import "UITextField+Placeholder.h"
#import <objc/message.h>
NSString * const placeholderColorName = @"placeholderColor";
@implementation UITextField (Placeholder)
+ (void)load
{
// 獲得setPlaceholder
Method setPlaceholder = class_getInstanceMethod(self, @selector(setPlaceholder:));
// 獲得bs_setPlaceholder
Method bs_setPlaceholder = class_getInstanceMethod(self, @selector(bs_setPlaceholder:));
// 交流辦法
method_exchangeImplementations(setPlaceholder, bs_setPlaceholder);
}
// OC最愛好懶加載,用的的時刻才會去加載
// 須要給體系UITextField添加屬性,只能應用runtime
- (void)setPlaceholderColor:(UIColor *)placeholderColor
{
// 設置聯系關系
objc_setAssociatedObject(self,(__bridge const void *)(placeholderColorName), placeholderColor, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
// 設置占位文字色彩
UILabel *placeholderLabel = [self valueForKeyPath:@"placeholderLabel"];
placeholderLabel.textColor = placeholderColor;
}
- (UIColor *)placeholderColor
{
// 前往聯系關系
return objc_getAssociatedObject(self, (__bridge const void *)(placeholderColorName));
}
// 設置占位文字,而且設置占位文字色彩
- (void)bs_setPlaceholder:(NSString *)placeholder
{
// 1.設置占位文字
[self bs_setPlaceholder:placeholder];
// 2.設置占位文字色彩
self.placeholderColor = self.placeholderColor;
}
@end
總結
以上就是IOS應用runtime修正文本框占位文字色彩的全體內容,願望對年夜家開辟IOS能有所贊助,假如有疑問年夜家可以留言交換。
【iOS應用runtime修正文本框(TextField)的占位文字色彩】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!