EALayout 第七节 控件属性设置

来源:互联网 发布:会计中级网络课程 编辑:程序博客网 时间:2024/06/15 14:38

Swift 

       https://github.com/easycodingTop/EALayout

Objective-C

       https://github.com/easycodingTop/EALayoutLiteForOC

QQ群:454686295

====================================================

这一节 讲一下控件属性设置

如何给一个控件设置属性

{
"key":Value
}
基本格式就是使用 json格式的 key-value方式给对应控件设置属性
====================================================
class

       { "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:resizeCapresizingMode:(UIImageResizingModeTile)]

"image":{"name":"Images/btn_bg.png","resizeCap":[15,20,20,20],"model":"stretch"},

                        会调用 [imageresizableImageWithCapInsets:resizeCapresizingMode:(UIImageResizingModeStretch)]

                 "image":{"name":"Images/btn_bg.png","resizeCap":[15,20,20,20]},

                         会调用   [imageresizableImageWithCapInsets: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"

========================================================================================

敬请关注下一节:

====================================================

Swift 

https://github.com/easycodingTop/EALayout

Objective-C

 https://github.com/easycodingTop/EALayoutLiteForOC


QQ群:454686295

====================================================




0 0