UIView's border color in Interface builder doesn't work?-Collection of common programming errors
Here’s a quick way to overcome this. Categories…
@interface UIView (IBAppearance)
@property (nonatomic, strong) UIColor *borderColor;
@end
You don’t have to store it, it’s just nice so you can query later. The important thing is taking the value and assigning the UIColor’s CGColor to the layer.
#import
#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
Of course, in the Interface Builder you’re not setting the value on layer.borderColor, rather just on borderColor.