iOS 使用 Runtime Attribute 为 IB 控件添加不能直接设置的属性

4 篇文章 0 订阅
3 篇文章 0 订阅

Runtime Attribute 是一个不被看重但功能非常强大的特性,它可以帮助你编写更加轻量级的ViewController。

1、在什么情况下使用

当你使用IB(Storyboard或者Xib)编辑视图的时候,有时可能会遇到诸如 圆角、边框、边框颜色、等等难以通过IB直接设置的属性。

这时你不得不借助代码实现。其实当出现这类情况时,我们其实可以借助Runtime Attribute在IB中实现。

2、如何使用

如图所示,在IB中,点击任意一个控件切换到identity inspector

图1

在User Defined Runtime Attributes新增属性

在这里可以为控件设置值为

Boolean - BOOL

Number - NSNumber 对象 或者 枚举 或者 NSInteger 或者CGFloat

String - NSString *

Point  - CGPoint

Size - CGSize

Range - NSRange

Color - UIColor *

等属性,但必须逐级调用

例如 layer.cornerRadius layer.masksToBounds 这里其实是 对象.layer.cornerRadius 的调用关系

同时,你甚至可以为它设置一个自定义的属性

比如你可以随意扩充一个名位 status 的属性表示开启状态,但前提是你必须为控件自定义一个实现了 runtime自动构建成员的引用。

如图1所示,这里有一个 layer.borderColorFromeUIColor,这实际上是我为了解决IB不能设置CGColor和为CALayer引入的一个属性。

如图2所示,我们在Swift中为CALayer 扩展一个属性

图2

使用的时候写成 layer.borderColorFromUIColo(标准的Set方法调用),这样IB也可以设置CGColor了

3、DEMO

图3

新建IB文件如图3所示,Swift工程在任意文件中放入以下代码

extension CALayer{

    func setBorderColorFromUIColor(color:UIColor){

        self.borderColor = color.CGColor

    }

}

编译运行,及实现了在IB中为控件设置 圆角,边框,边框颜色

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值