用runtime给系统类添加属性
#import "UITextField+Placeholder.h" #import <objc/message.h> @implementation UITextField (Placeholder) +(void)load{ Method setPlaceholder = class_getInstanceMethod(self, @selector(setPlaceholder:)); Method setQLCPlaceholder = class_getInstanceMethod(self, @selector(setQLCPlaceholder:)); //交换方法实现 method_exchangeImplementations(setPlaceholder, setQLCPlaceholder); } -(void)setPlaceholderColor:(UIColor *)placeholderColor{ objc_setAssociatedObject(self, @"placeholderColor", placeholderColor, OBJC_ASSOCIATION_RETAIN_NONATOMIC); UILabel *placeholderLabel = [self valueForKey:@"placeholderLabel"]; //方法实现:首先找有没有这样的get方法,没有则继续找placeholderLabel这个成员属性,还没有则接着找_placeholderLabel placeholderLabel.textColor = placeholderColor; } -(UIColor *)placeholderColor{ return objc_getAssociatedObject(self, @"placeholderColor"); } -(void)setQLCPlaceholder:(NSString *)placeholder{ [self setQLCPlaceholder:placeholder]; self.placeholderColor = self.placeholderColor; }