これを克服する簡単な方法は次のとおりです。カテゴリ...
@interface UIView (IBAppearance)
@property (nonatomic, strong) UIColor *borderColor;
@end
保存する必要はありません。後でクエリできるので便利です。重要なのは、値を取得してUIColorのCGColorをレイヤーに割り当てることです。
#import <objc/runtime.h>
#define BORDER_COLOR_KEYPATH @"borderColor"
@implementation UIView (IBAppearance)
- (void)setBorderColor:(UIColor *)borderColor {
UIColor *bc = objc_getAssociatedObject(self, BORDER_COLOR_KEYPATH);
if(bc == borderColor) return;
else {
objc_setAssociatedObject(self, BORDER_COLOR_KEYPATH, borderColor, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
self.layer.borderColor = [borderColor CGColor];
}
}
- (UIColor *)borderColor {
return objc_getAssociatedObject(self, BORDER_COLOR_KEYPATH);
}
@end
もちろん、Interface Builderでは、値をに設定するのではlayer.borderColor
なく、に設定しますborderColor
。