附加属性系统是0.5.0版本新增的功能,区别于普通属性,附加属性是专门提供给子元素设置的。
比如:grid-panel提供了一个column-span的附加属性,如果子元素设置了该属性,那么在显示的时候就能跨列显示。
1 | <grid-panel columns="3" column-spacing="10" row-spacing="10"> |
附加属性在设置属性的时候有一个特点,那就是在属性之前必须添加父元素的名称并且加上.来连接。比如上面的grid-panel.column-span,意味着设置了一个由grid-panel提供的column-span属性。
附加属性支持数据绑定,但是只支持once模式(默认绑定模式),这也就意味着附加属性不支持动画。
首先自定义元素需要实现GICLayoutElementProtocol协议中的gic_elementAttachAttributs方法。而且该自定义元素必须显示使用GICElementsCache来注册,否则GIC无法识别。
实现代码如下:
1 | +(NSArray<GICAttributeValueConverter *>*)gic_elementAttachAttributs{ |
由于该属性是提供给子元素使用的,因此需要将该value保存到子元素中。也就是通过如下代码设置value。
1 | [[target gic_ExtensionProperties] setAttachValue:value withAttributeName:GridPanelAttachColumnSpanKey]; |
使用如下方法来获取属性。
1 | [[target gic_ExtensionProperties] attachValueWithAttributeName:GridPanelAttachColumnSpanKey]; |