https://github.com/easycodingTop/EALayoutLiteForOC
QQ群:454686295
====================================================
这一节 讲一下控件属性设置
如何给一个控件设置属性
{ "class":"UIView" } class 指定view类型,也可以是自定类。 swift里自定义的类需要使用 @objc(类名)导出oc头文件
**color
各种以 color 为后缀的属性(或者带有 set***Color方法的), 不分大小写, 均会自动解析为 UIColor对象
color 表示方式: 如 "backgroundColor":"blackColor", "textColor":[100,150,200,0.8]
"#aarrggbb" OR "0xaarrggbb" : 这种 十六进制 字符器 分别为 a-透明度 r-红色 g-绿色 b-蓝色
"blackColor" OR "redColor", 等等 : 这种是通过调用 [UIColor blackColor] 这种方法实现,所以支持 UIColor 支持的类似所有方法。
[r,g,b] OR [r,g,b,a] : 这种是数组的方式。 r ,g ,b 分别是 十进制 [0,255], a 为透明度 [0.0, 1.0] 。 默认a为1.0
如果某个类的属性是以 color为后缀结尾,但是又不是 UIColor对象类型,需要自己为此类重写解析,
为该类添加方法 -(void)***Color:(id)value parser:(SkinParser*)parser.
比如: CALayer 中的 borderColor backgroundColor shadowColor 类型均为 CGColor
所以为此类添加对应方法
-(void)borderColor:(id)value parser:(SkinParser*)parser { self.borderColor =toColor(value).CGColor; }
-(void)backgroundColor:(id)value parser:(SkinParser*)parser
-(void)shadowColor:(id)value parser:(SkinParser*)parser
**image
以image为后缀的属性(或者带有set***Image), 不分大小写, 均会自动解析为 UIImage 对象。
image 表示方式:
"image/myicon.png", 一个图片相对于当前 json文件的相对路径
"image":{"name":"Images/btn_bg.png","resizeCap":[15,20,20,20],"model":"tile"},
则会调用 [image resizableImageWithCapInsets:resizeCap resizingMode:(UIImageResizingModeTile)]
"image":{"name":"Images/btn_bg.png","resizeCap":[15,20,20,20],"model":"stretch"},
会调用 [image resizableImageWithCapInsets :resizeCap resizingMode :( UIImageResizingModeStretch )]"image":{"name":"Images/btn_bg.png","resizeCap":[15,20,20,20]},
会调用 [image resizableImageWithCapInsets:resizeCap];
**font
表示方式 :
"font":14 , 默认为 systemFontOfSize
"font":{"size":14, "name":"bold"}, name 支持 "italic" "system" 以及其它字体名字,还有自定义字体均可
**frame
表示方式:
"frame": [x,y,width,height]
**size
表示方式:
"size":[width,height]
**insets / *inset
表示方式:
"insets/inset":[top,left,bottom,right]
**view
表示方式:
{ "class":"UILabel", xxxxxxx:xxxxxx }
**viewMode
表示方式:
"viewMode": "never" / "whileEditing" / "unlessEditing" / "always"
分别对应 UITextFieldViewModeNever,
UITextFieldViewModeWhileEditing,
UITextFieldViewModeUnlessEditing,
UITextFieldViewModeAlways
====================================================
上面这些属性都是预设 支持的解析, 更多可以看下 库里头文件里的定义。
后面会具体讲如何 添加解析规则,自定义属性解析。
上面没提到的其它简单属性,无需特别的解析方法,可以自动设置
比如 number string bool 这些类型。直接在json里写上和属性名一样的key就可以了
比如 alpha 属于number类型,所以直接写上 "alpha":0.5
UILabel的text 是 string类型, 直接写上 "text":"asdfasdf"
========================================================================================
敬请关注下一节:
====================================================
https://github.com/easycodingTop/EALayoutLiteForOC
QQ群:454686295
====================================================