iOS IB_DESIGNABLE 和 IBInspectable 用法简介

场景

在开发中,经常会遇到设置 UIView 或者 UIImageView 等控件圆角的情况,在 xib 和 storyboard 里面,我们一般使用 Runtime Attributes 的方式,通过 layer.cornerRadiuslayer.masksToBounds 设置圆角半径和边缘裁剪。如下图

虽然运行起来能够实现,但是我们并不能在 xib 马上看到效果,要能实时在 Xcode 显示界面效果,就需要用到 IB_DESIGNABLEIBInspectable 特性了。

用法

Xcode 6 开始,苹果就提供了 IB_DESIGNABLEIBInspectable 特性,用法如下表

特性用途OC 使用swift 使用
IB_DESIGNABLE动态渲染该类图形化界面IB_DESIGNABLE 写在 @interface@IBDesignable 写在 class 前
IBInspectable可视化编辑该类的属性IBInspectable 写在属性类型前@IBInspectable 写在变量前

直接上代码。创建一个UIView子类,加上 IB_DESIGNABLE 特性

#import <UIKit/UIKit.h>

IB_DESIGNABLE

@interface LCBaseView : UIView

@end
复制代码

这时候已经能在设计器直接看到效果了(不要忘了设置 CustomClass

然后再试试 IBInspectable,给 View 加一个 cornerRadius 属性用来设置圆角半径

#import <UIKit/UIKit.h>

IB_DESIGNABLE

@interface LCBaseView : UIView

/** 圆角半径 */
@property (nonatomic, assign) IBInspectable CGFloat cornerRadius;

@end
复制代码

然后在 .m 文件中重写 set 方法设置圆角

#import "LCBaseView.h"

@implementation LCBaseView

- (void)setCornerRadius:(CGFloat)cornerRadius {
    self.layer.cornerRadius = cornerRadius;
    self.layer.masksToBounds = YES;
}

@end
复制代码

回到设计器,会发现刚刚我们自定义的属性神奇的出现在了面板上。把之前设置的 Runtime Attributes 属性全部删了,在这里设置一个100,已经实现了我们想要的效果。

转载于:https://juejin.im/post/5a31cb5ff265da432840dcc8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值