神奇的IB_DESIGNABLE和IBInspectable

原文链接
http://www.jianshu.com/users/244aa1f48d1c/latest_articles
  • 情景:在很多中情况下我们需要设置UIView或者UIImageView的圆角以及边框等,我们通常的做法是:

    • 1.代码创建的控件:利用代码设置cornerRadius(别忘记设置裁剪哦masksToBounds = YES)和borderWidth属性;
    • 2.在xib中你还有一种做法就是设置Key Paht;(注意:这里虽然设置了我们并不能立即在xib中看到设置后圆角效果,这是本文重点)

      设置Key Paht
    • 3.设置圆形图片的话,还可以画一个圆形图片,详情可以移步这里;
  • 下面以在xib中设置圆角为例,说明IB_DESIGNABLEIBInspectable的神奇之处:

IB_DESIGNABLE 的具体使用方法:
  • IB_DESIGNABLE的功能就是让XCode动态渲染出该类图形化界面;
  • 使用IB_DESIGNABLE的方式,把该宏加在自定义类的前面;
  • 1.自定义一个UIview---YCCustomView
#import <UIKit/UIKit.h>

// 在定义类的前面加上IB_DESIGNABLE宏
IB_DESIGNABLE

@interface YCCustomView : UIView

@end
  • 2.在xib中拖一个UIView,并修改类名为YCCustomView

    • 这里还是利用key Paht设置圆角,即可动态刷新我们的自定义View,效果图如下:


      IB_DESIGNABLE
    • 说明:别忘记设置view的class为我们自定义的哦


说明
IBInspectable 的具体使用方法:
  • 我们在上面已经知道了IB_DESIGNABLE的使用,我们能立即看到设置的圆角效果(动态刷新),但是有一个问题,我们通过设置Key Path来设置是不是很麻烦~,下面我们通过一种更加直观的方式来设置,如下:

默认是没有这些选项的,不信你瞅瞅你的~.~

废话不多说,直接上代码:

#import <UIKit/UIKit.h>

IB_DESIGNABLE  // 动态刷新

@interface YCCustomView : UIView

// 注意: 加上IBInspectable就可以可视化显示相关的属性哦
/** 可视化设置边框宽度 */
@property (nonatomic, assign)IBInspectable CGFloat borderWidth;
/** 可视化设置边框颜色 */
@property (nonatomic, strong)IBInspectable UIColor *borderColor;

/** 可视化设置圆角 */
@property (nonatomic, assign)IBInspectable CGFloat cornerRadius;

@end

重写set方法,根据可视化设置的值设置相关的属性

#import "YCCustomView.h"

@implementation YCCustomView

/**
 *  设置边框宽度
 *
 *  @param borderWidth 可视化视图传入的值
 */
- (void)setBorderWidth:(CGFloat)borderWidth {

    if (borderWidth < 0) return;

    self.layer.borderWidth = borderWidth;
}

/**
 *  设置边框颜色
 *
 *  @param borderColor 可视化视图传入的值
 */
- (void)setBorderColor:(UIColor *)borderColor {

    self.layer.borderColor = borderColor.CGColor;
}

/**
 *  设置圆角
 *
 *  @param cornerRadius 可视化视图传入的值
 */
- (void)setCornerRadius:(CGFloat)cornerRadius {

    self.layer.cornerRadius = cornerRadius;
    self.layer.masksToBounds = cornerRadius > 0;
}

@end
  • 效果演示

    IBInspectable
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值