//这是.h
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface UIImage (Category)
@property (nonatomic,strong) UIColor * defaultColor;
@end
NS_ASSUME_NONNULL_END
///这是.m
#import "UIImage+Category.h"
#import <objc/runtime.h>
@implementation UIImage (Category)
static char kDefaultColorKey;
@dynamic defaultColor;
- (void) setDefaultColor:(UIColor *)defaultColor {
objc_setAssociatedObject(self, &kDefaultColorKey, defaultColor, OBJC_ASSOCIATION_COPY_NONATOMIC);
}
- (UIColor *)defaultColor {
return objc_getAssociatedObject(self, &kDefaultColorKey);
}
@end
如代码所示:先用objc_setAssociatedObject 给UIImage关联一个UIColord的属性defaultColor
用的时候用objc_getAssociatedObject读取关联的UIColor的属性。
- 注意:在设置属性的时候用@dynamic来告诉编译器不要自动生成get和set方法
使用的时候如下:
UIImage * img =[UIImage imageNamed:@"login_icon1"];
Class cla = [UIImage class];
imageView.image = img;
img.defaultColor = UIColor.redColor;
NSLog(@"%@",img.defaultColor);