您的位置:首页 > 产品设计 > UI/UE

iOS 在user defined runtime attributes(用户定义的运行时属性)改变UI

2016-01-14 18:36 645 查看

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息