//這是.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關(guān)聯(lián)一個UIColord的屬性defaultColor
用的時候用objc_getAssociatedObject讀取關(guān)聯(lián)的UIColor的屬性。
- 注意:在設置屬性的時候用@dynamic來告訴編譯器不要自動生成get和set方法
使用的時候如下:
UIImage * img =[UIImage imageNamed:@"login_icon1"];
Class cla = [UIImage class];
imageView.image = img;
img.defaultColor = UIColor.redColor;
NSLog(@"%@",img.defaultColor);