MyLinearLayout v1.3.6 Release Notes

  • ➕ Added

    1. 添加了对阿拉伯国家的从右往左方向布局的功能#issue33。系统提供了一个类属性:isRTL来实现对RTL布局的支持。同时为了支持RTL系统增加了UIView的扩展属性:leadingPos, trailingPos, myLeading,myTrailing用来实现头部和尾部的方向,MyBaseLayout则添加了leadingPadding,trailingPadding用来实现内边距的RTL支持。而边界线则增加了leadingBorderline, trailingBorderline属性来支持RTL。同时新增了MyGravity_Horz_Leading,MyGravity_Horz_Trailing两个停靠属性。下面的表格是介绍这些属性的意义。
    所属类名 新属性 等价于LRT方向布局 等价于RTL布局方向
    UIView(MyLayoutExt) leadingPos leftPos rightPos
    UIView(MyLayoutExt) trailingPos rightPos leftPos
    UIView(MyLayoutExt) myLeading myLeft myRight
    UIView(MyLayoutExt) myTrailing myRight myLeft
    MyBaseLayout leadingPadding leftPadding rightPadding
    MyBaseLayout trailingPadding rightPadding leftPadding
    MyBaseLayout leadingBorderline leftBorderline rightBorderline
    MyBaseLayout trailingBorderline rightBorderline leftBorderline
    MyGravity MyGravity_Horz_Leading MyGravity_Horz_Left MyGravity_Horz_Right
    MyGravity MyGravity_Horz_Trailing MyGravity_Horz_Right MyGravity_Horz_Left
    如果您的界面布局不需要考虑RTL以及对阿拉伯国际的支持则不需要使用上述新添加的属性。
    
    1. 添加了UIView扩展新属性wrapContentSize用来简化对wrapContentHeight和wrapContentWidth的设置。这个属性尤其对UILabel有用,表示视图的尺寸由内容自适用。
    2. 实现了对UILabel的textattributedText进行设置后自动布局的功能,老版本的代码中每次设置完毕text值后要调用一下sizeToFit来激发布局,新版本自动添加了这个功能,使得不需要明确调用sizeToFit了。但是这样的前提是您必须对UILabel设置了wrapContentHeight或者wrapContentWidth。 ✅ 4. 对布局类添加新属性cacheEstimatedRect,这个属性用来和高度自实用的UITableViewCell结合使用能大幅度的提供布局计算的性能。这个属性提供了缓存一次尺寸评估的机制,使得当存在有复用的cell时减少布局的计算。 具体例子参考(DEMO:AllTest1TableViewCell) ✅ 5. MyLayoutPos对象的equalTo方法的val值新增加了对UIView对象的支持,可以直接设置某个视图的位置等于另外一个视图,表示等于另外一个视图的对应的位置;另外val的值还支持对id对象的支持,比如topPos可以等于视图控制器的topLayoutGuide属性,bottomPos可以等于视图控制器的bottomLayoutGuide属性,这样就可以使得某个布局视图下的子视图的位置不会延生到导航条下面去。具体请参考DEMO:LLTest1ViewController。
    3. MyLayoutSize对象的equalTo方法的val值新增加了对UIView对象的支持,可以直接设置某个视图的尺寸等于另外一个视图,表示等于另外一个视图的对应的尺寸。
    4. 对边界线类MyBorderline增加属性offset可以实现边界线绘制的偏移位置,而不是默认的在视图的边界上。

    🛠 Fixed

    1. 修复了将一个布局视图加入到SB或者XIB上时同时设置了四周边距而不起作用的#BUG36。具体解决的方法是实现了MyBaseLayout的awakeFromNib方法,然后在里面更新了布局。
    2. 修复了框架布局MyFrameLayout和相对布局MyRelativeLayout中计算wrapContentSize时可能计算错误的BUG。

    🔄 Changed

    1. 为了和TangramKit库保持一致,对一些名字进行了统一的定义。下面表格列出了新旧名称的定义变化。
    所属类名 新定义 老定义
    MyOrientation MyOrientation MyLayoutViewOrientation
    MyOrientation MyOrientation_Vert MyLayoutViewOrientation_Vert
    MyOrientation MyOrientation_Horz MyLayoutViewOrientation_Horz
    MyAdjustScrollViewContentSizeMode MyAdjustScrollViewContentSizeMode MyLayoutAdjustScrollViewContentSizeMode
    MyAdjustScrollViewContentSizeMode MyAdjustScrollViewContentSizeModeAuto MyLayoutAdjustScrollViewContentSizeModeAuto
    MyAdjustScrollViewContentSizeMode MyAdjustScrollViewContentSizeModeNo MyLayoutAdjustScrollViewContentSizeModeNo
    MyAdjustScrollViewContentSizeMode MyAdjustScrollViewContentSizeModeYes MyLayoutAdjustScrollViewContentSizeModeYes
    如果您要替换掉所有老方法和属性(建议替换),则您可以按照如下步骤来完成代码的替换工作:
    
             1. 查找所有:MyLayoutViewOrientation_  并替换为MyOrientation_  (选择Containning, 查找后选择preview,然后把除MyLayout库之外的其他都替换掉)
             2. 查找所有:MyLayoutAdjustScrollViewContentSizeMode  并替换为MyAdjustScrollViewContentSizeMode  (选择Containning, 查找后选择preview,然后把除MyLayout库之外的其他都替换掉)
    
    1. 新版本优化了布局库的子视图构建性能和布局性能。下面表格是新旧版本各布局视图内单个子视图在iPhone6真机设备下的构建和布局时长值(单位是毫秒ms)