处理文本占字符颜色
越复杂的东西越要封装,
当我们的额设置的东西只要一次的时候,而且使用的xib我们可以在aweakFromNib中设置,
当我们找这个占字符的先去头文件查找,attributePlaceholderString
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
dic[NSForegroundColorAttributeName] = [UIColor whiteColor];
self.attributedPlaceholder = [[NSAttributedString alloc] initWithString:self.placeholder attributes:dic];
快速设置占字符颜色

屏幕快照 2019-10-22 上午11.07.31.png
这是看可以看懂field的内部,这是我们可以通过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方法,和我们自己的设置的方法交换实现.
+ (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给系统的类添加成员属性
// 添加成员属性
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;
}
1万+

被折叠的 条评论
为什么被折叠?



