How to set default values for IBInspectable in Objective-C? How to set default values for IBInspectable in Objective-C? swift swift

How to set default values for IBInspectable in Objective-C?


Since IBInspectable values are set after initWithCoder: and before awakeFromNib:, you can set the defaults in initWithCoder: method.

@interface MyView : UIView@property (copy, nonatomic) IBInspectable NSString *myProp;@property (assign, nonatomic) BOOL createdFromIB;@end@implementation MyView- (id)initWithCoder:(NSCoder *)aDecoder {    self = [super initWithCoder:aDecoder];    if(self != nil) {        self.myProp = @"foo";        self.createdFromIB = YES;    }    return self;}- (void)awakeFromNib {    if (self.createdFromIB) {        //add anything required in IB-define way    }    NSLog(@"%@", self.myProp);}@end


I wrote my code like this. It works pretty well for me, both when designing in the interface builder or running as a app.

@interface MyView : UIView@property (copy, nonatomic) IBInspectable propertyType *propertyName;@end- (void)makeDefaultValues {    _propertyName = defaultValue;    //Other properties...}- (instancetype)initWithFrame:(CGRect)frame {    if (self = [super initWithFrame:frame]) {        [self makeDefaultValues];    }    return self;}- (instancetype)initWithCoder:(NSCoder *)aDecoder {    if (self = [super initWithCoder:aDecoder]) {        [self makeDefaultValues];    }    return self;}


I'm using like that

@IBInspectable var propertyNameValue:propertyType?var propertyName:propertyType { return propertyNameValue ?? defaultValue }

if propertyNameValue has nil, propertyName will return defaultValue.