user defined runtime attributes(用户定义的运行时属性)是一个非常强大但是几乎没用过的功能
它在这里:
我们先看一下它的他用处,在Main.StoryBord里面添加一个Lable和一个TextFile:
在ViewController里面我没有添加任何对它们的操作,甚至没有拖线链接关系:
但是我们看一下运行效果:
我们只要在user defined runtime attributes(用户定义的运行时属性)里面进行操作就可以达到编写控件UI的目的
接下来我们看一下具体流程:
这是进来的两个控件:
运行一下一切正常:
接下来我们对这两个空间的user defined runtime attributes进项编辑:
注意:在user defined runtime attributes(用户定义的运行时属性)是没有报错机制的,我们必须保障每一个属性都要写正确(尤其是大小写)和每个Type的数据类型选择正确
下面是一些可用的Attribute Types与其相对应的数据类型
Boolean– BOOL
Number– NSNumber * or any numeric scalar, e.g. NSInteger
String– NSString *
Point – CGPoint
Size – CGSize
Rect– CGRect
Range– NSRange
Color– UIColor *
运行一下:
好像有问题,textFile的biorderColor没有改变,原因是IB不支持部分数据类型,例如我要配置CALayer的 border coloer 和 shadow color,他们都是CGColorRef类型的,并不能直接在User Defined Runtime Attributes进行配置。这样我们就要给CALayer增加一个分类(cateGories),让它支持这个数据类型。
注:在oc中为了增强已有类的功能,我们经常使用分类。使用分类,我们可以在不破坏原有类的结构的前提下,对原有类进行模块化的扩展。但是在swift中没有分类这个概念了。取而代之的是扩展(Extensions)。
如图:
点击command+N
我们在创建的这个扩展里面写一个继承于CALayer的类:
再次运行一下试试:
当然user defined runtime attributes并不只是有这么简单的方法!更多功能还需要我们自己去挖掘!
注:转载请注明出处,http://blog.csdn.net/lg_sun/article/details/50519272
附:代码地址:https://github.com/SLGgit/LG_runTime-UI