IBInspectable和IB_DESIGNABLE的使用

前言


    在iOS开发过程中,我们经常要根据项目需要自定义UI控件来完成一个特殊的功能(尽管UIkit框架已经提供了很多强大的控件)。当我们使用xib来自定义UI时,一般的做法是拖一个系统控件,然后将它的class设为我们自定义的控件,这时,xib是没有任何反应的,不会将我们自定义的属性显示在控件属性一栏的列表里。为了解决这一问题,Xcode6引入了两个宏:IBInspectable和IB_DESIGNABLE。


IBInspectable

    该宏会让xib识别自定义的属性,它支持这些数据类型:BOOL、NSString、NSNumber、CGPoint、CGSize、CGRect、NSRange、UIColor、UIImage。

    废话不多说直接上代码。

//  .h文件

@interface CustomButton : UIButton

@property (nonatomic,strong) IBInspectable UIImage *highlightedImage;

@property (nonatomic,assign) IBInspectable CGFloat cornerRadius;

@property (nonatomic,assign) IBInspectable CGFloat borderWidth;

@property (nonatomic,strong) IBInspectable UIColor *borderColor;

@end

// .m文件

@implementation CustomButton

- (void)setHighlightedImage:(UIImage *)highlightedImage {

_highlightedImage = highlightedImage;

[self setImage:_highlightedImage forState:UIControlStateHighlighted];

}

- (void)setCornerRadius:(CGFloat)cornerRadius {

self.layer.cornerRadius = cornerRadius;

}

- (void)setBorderColor:(UIColor *)borderColor {

self.layer.borderColor = borderColor.CGColor;

}

- (void)setBorderWidth:(CGFloat)borderWidth {

self.layer.borderWidth = borderWidth;

}

@end


IBInspectable和IB_DESIGNABLE的使用_第1张图片
xib文件

    xib 会把属性名以大驼峰样式显示,如果有多个属性,xib 也会自动按属性名的第一个单词分组显示,这样我们就可以在xib中设置按钮的自定义的样式了。通过使用IBInspectable宏,你可以把原本只能通过代码来设置的属性,也放到 xib 里来,代码就显得更加简洁了。

IB_DESIGNABLE

    通过使用IBInspectable宏,我们可以在xib中设置我们自定义的属性,但是xib里控件的样式并没有像我们设想的那样发生变化,只有当程序运行时我们才能看出我们自定义的效果。这时使用IB_DESIGNABLE宏就可以让xib实时反映出我们设置的效果。我们只需在定义该类时加IB_DESIGNABLE即可。

IBInspectable和IB_DESIGNABLE的使用_第2张图片

于是我们的xib就变成了这样:

IBInspectable和IB_DESIGNABLE的使用_第3张图片
xib文件

最后

    关于IBInspectable和IB_DESIGNABLE的详细介绍请戳这里  ,里面介绍了swift下的使用。


你可能感兴趣的:(IBInspectable和IB_DESIGNABLE的使用)