MyLayout的所有版本的变更日志都将会在这里记录.
MyLinearLayout
中的shrinkType
属性增加了对MySubviewsShrink_Space
枚举的支持,也就是可以支持当子视图的尺寸大于布局的尺寸时会自动压缩子视图之间的间距。具体例子参见(DEMO:AllTest7ViewController)中最后一个小例子。horzMargin
和同时设置上下边距的vertMargin
两个视图的扩展属性,方便进行左右和上下边距的设置。MyFlowLayout
中当最后一行的数量等于每行的数量时无法拉伸间距的#BUG35。所属类(class) | 老命名(old name) | 新命名(new name) |
---|---|---|
UIView(MyLayoutExt) | myTopMargin | myTop |
UIView(MyLayoutExt) | myLeftMargin | myLeft |
UIView(MyLayoutExt) | myBottomMargin | myBottom |
UIView(MyLayoutExt) | myRightMargin | myRight |
UIView(MyLayoutExt) | myCenterXOffset | myCenterX |
UIView(MyLayoutExt) | myCenterYOffset | myCenterY |
UIView(MyLayoutExt) | myCenterOffset | myCenter |
UIView(MyLayoutExt) | widthDime | widthSize |
UIView(MyLayoutExt) | heightDime | heightSize |
UIView(MyLayoutExt) | flexedHeight | wrapContentHeight |
MyBaseLayout | subviewMargin | subviewSpace |
MyBaseLayout | subviewVertMargin | subviewVSpace |
MyBaseLayout | subviewHorzMargin | subviewHSpace |
MyBaseLayout | leftBorderLine | leftBorderline |
MyBaseLayout | rightBorderLine | rightBorderline |
MyBaseLayout | topBorderLine | topBorderline |
MyBaseLayout | bottomBorderLine | bottomBorderline |
MyBaseLayout | boundBorderLine | boundBorderline |
MyBaseLayout | IntelligentBorderLine | intelligentBorderline |
MyBaseLayout | notUseIntelligentBorderLine | notUseIntelligentBorderline |
MyBorderline | MyBorderLineDraw | MyBorderline |
MyGravity | MyMarginGravity | MyGravity |
MyGravity | MyMarginGravity_XXXX | MyGravity_XXXX |
MyLinearLayout | averageSubviews: | equalizeSubviews: |
MyLinearLayout | averageSubviews:inSizeClass: | equalizeSubviews:inSizeClass: |
MyLinearLayout | averageSubviews:withMargin | equalizeSubviews:withSpace |
MyLinearLayout | averageSubviews:withMargin:inSizeClass: | equalizeSubviews:withSpace:inSizeClass: |
MyLinearLayout | averageMargin: | equalizeSubviewsSpace: |
MyLinearLayout | averageMargin:inSizeClass: | equalizeSubviewsSpace:inSizeClass: |
MyTableLayout | rowSpacing | subviewVSpace |
MyTableLayout | colSpacing | subviewHSpace |
非常抱歉进行了这么多名称的变更。现在是将所有老的属性和方法名都设置为了过期属性和方法,并且依然能够使用,但是会报告警。
为了保持对老版本的兼容性,您可以在PCH文件,或者MyLayout.h的头文件引用前,或者工程设置中 加入宏定义: #define MY_USEOLDMETHODNOWARNING = 1 样就不会产代码中使用老方法名而报警了。
如果您要替换掉所有老方法和属性(建议替换),则您可以按照如下步骤来完成代码的替换工作:
1. 查找所有:MyMarginGravity_ 并替换为MyGravity_ (选择Containning, 查找后选择preview,然后把除MyLayout库之外的其他都替换掉)
2. 把所有.myLeftMargin, .myRightMargin, .myTopMargin, .myBottomMargin, .myCenterXOffset, .myCenterYOffset, .myCenterOffset 分别替换为.myLeft, .myRight, .myTop, .myBottom, .myCenterX, .myCenterY, .myCenter (选择Matching模式)
3. 把所有.widthDime替换为.widthSize, .heightDime替换为.heightSize (选择Matching模式)
4. 把所有.subviewMargin替换为.subviewSpace, .subviewVertMargin替换为.subviewVSpace, .subviewHorzMargin替换为.subviewHSpace (选择Matching模式)
5. 把所有的MyBorderLineDraw替换为MyBorderline(选择Matching模式 并注意MyBaseLayout.h中的不要替换)
6. 把.leftBorderLine替换为.leftBorderline, .rightBorderLine替换为.rightBorderline, .topBorderLine替换为.topBorderline, .bottomBorderLine替换为.bottomBorderline, .IntelligentBorderLine替换为.intelligentBorderline, .notUseIntelligentBorderLine替换为.notUseIntelligentBorderline(选择Matching模式)
7. 把averageSubviews:方法替换为equalizeSubviews: 把averageMargin:替换为equalizeSubviewsSpace: (注意不要替换MyLinearLayout.h和MyLinearLayout.m中的部分)
-(CGRect)subview:(UIView*)subview estimatedRectInLayoutSize:(CGSize)size
用来评估一个将要加入布局视图的子视图的frame值。这个方法通常用来实现一些子视图在布局视图之间移动的动画效果的能力。具体例子参见(DEMO:AllTest4ViewController)####Changed
MyLinearLayout
中的shrinkType属性的默认值由原来的MySubviewsShrink_Average
改为了MySubviewsShrink_None
,也就是默认是不压缩的。useFrame
为YES时,子视图无法自由控制自己的frame的问题。MyLinearLayout
中的shrinkType
中添加了一个可设置的值MySubviewsShrink_Auto
这个值的目的是为了解决水平线性布局里面当有左右2个子视图的宽度都不确定,但又不希望2个子视图不能重叠展示的问题。具体例子参见(DEMO:AllTest7ViewController 中的第4个例子)。zeroPadding
用来描述当布局视图的尺寸由子视图决定,并且当布局视图中没有任何子视图时设置的padding值是否会参与布局视图尺寸的计算。默认是YES,当设置为NO时则当布局视图没有子视图时padding是不会参与布局视图尺寸的计算的。具体例子参见 (DEMO: LLTest4ViewController)wrapContentHeight
和wrapContentWidth
的支持,这两个属性由原来的布局视图属性移植到了所有视图的扩展属性中。这样对于一个非布局父视图也可以通过设置wrapContentHeight
和wrapContentWidth
来实现其高度和宽度由里面的子布局视图来决定。具体例子参见(DEMO: LLTest4ViewController)。marginGravity
的扩展属性来设置位置和尺寸的支持,具体变化参见MyFrameLayout.h中的代替方法。flexedHeight
的支持,将高度自适应设置改为了通过wrapContentHeight
扩展属性的设置来完成。makeLayout
来进行布局约束设置的一些方法。MyFlowLayout
添加了对分页滚动的支持,通过新增加的属性pagedCount
来实现,这个属性只支持数量约束流式布局。pagedCount
和wrapContentHeight以及wrapContentWidth
配合使用能够实现各种方向上的分页滚动效果(具体见DEMO:FLLTest5ViewController)MyLinearLayout
中完全支持了所有子视图的高度等于宽度的设置的功能,以及在水平线性布局中添加了子宽度等于高度的功能。MyFlowLayout
中的子视图的widthDime,heightDime中可设置的相对类型尺寸的值的维多扩宽,不仅可以依赖兄弟视图,父视图,甚至还可以依赖别的任意的视图。MyLayoutPos
和布局尺寸类MyLayoutSize
类中添加了新属性:active
.用来描述指定的位置或者尺寸所设置的约束是否有效。wrapContentWidth
或者wrapContentHeight
属性设置的布局视图加入到非布局父视图时,且又设置centerXPos,centerYPos,rightPos,bottomPos来定位布局视图时无法正确定位布局视图位置的BUG。UIScrollView
时会自动调整UIScrollView
的contentSize
的机制,新的机制中布局视图设置的MyLayoutPos
边距值也会算到contentSize里面去。比如某个布局的高度是100,其中的myTopMargin = 10, 那么当将布局视图加入到UIScrollView时他的contentSize的高度则是110.MyLayoutPos
的方法:lBound,uBound
用来设置视图的位置最小最大的依赖,lBound,uBound
方法只有在相对布局中的子视图设置才有效。MyPathLayout
中设置wrapContentWidth
和wrapContentHeight
为YES时的计算错误的情况。MyLinearLayout
里面均分间距和均分视图两个方法可能导致均分不正确的BUG。MyRelativeLayout
中如果设置了topPadding
而子视图的topPos
设置为数值时topPadding
不起作用的BUG#29。MyRelativeLayout
中子视图的高度设置为flexedHeight
时计算可能不正常的问题。MyMarginGravity_Horz_Between,MyMarginGravity_Vert_Between
两个新的类型的值,用于描述对布局里面子视图的拉伸操作。gravity
属性的功能(具体见LLTest3ViewController应用)。gravity
属性的功能(具体见FLLTest1ViewController应用)。-(void)setSubviewsSize:(CGFloat)subviewSize minSpace:(CGFloat)minSpace maxSpace:(CGFloat)maxSpace
用来实现内容约束流式布局的动态间距调整的功能,通过这个方法可以实现多屏幕的完美适配。-(void)setSubviewFloatMargin:(CGFloat)subviewSize minMargin:(CGFloat)minMargin
-(void)setSubviewsSize:(CGFloat)subviewSize minSpace:(CGFloat)minSpace maxSpace:(CGFloat)maxSpace
。averageArrange
gravity
属性的设置。po viewobj.myFrame.sizeClass
或者 expr -o -- viewobj.myFrame.sizeClass
两种方法。transform
进行坐标变换时的布局可能失效的问题。最新版本已经能和视图的transform
属性共同使用了,原因是老版本中最终进行布局时修改的是frame属性,而新版本中将所有对frame属性的修改都变化为了center和bounds两个属性。##V1.2.7(2016/11/13)
shrinkType
。这个属性可以用来控制当子视图中有比重尺寸或者相对间距,而又有固定尺寸比布局视图的尺寸还大时,用于缩小这些固定尺寸视图的尺寸值的方法。(具体见AllTest7ViewController应用)。rotationToDeviceOrientationBlock
属性。这个block给予用户在布局视图第一次完成或者有屏幕旋转时进行界面布局处理的机会。我们可以通过这个block块来处理设备屏幕旋转而需要改动布局的场景。这个block块不像beginLayoutBlock
以及endLayoutBlock
那样只调用一次,而是第一次布局完成以及每次屏幕旋转并布局完成后都会调用,因此要注意循环引用的问题。(具体见LLTest6ViewController应用)。uBound
和lBound
方法中最大最小值设置时可以等于自己的情况,这样目的是为了保证视图本身的尺寸不被压缩。(具体见AllTest7ViewController应用)。po 视图对象.absPos.sizeClass
或者expr -o -- 视图.absPos.sizeClass
方法时可以输出布局设置的各种布局属性值。topPos,rightPos,topPos,bottomPos
的值是大于0且小于1时表明的是相对边距。wrapContentWidth
或者wrapContentHeight
属性时,wrapContentWidth
或者wrapContentHeight
设置失效的限制。(具体见AllTest7ViewController应用)。uBound,lBound
方法的最大最小尺寸设置为父布局视图时,而布局视图又有padding
时,没有减去padding
值的BUG。MAS_SHORTHAND_GLOBALS
时造成offset, equalTo
方法无法使用的问题,解决的方法是您可以在PCH或者在使用MyLayout.h之前定义:#define MY_USEPREFIXMETHOD
这个宏,这样所有MyLayoutPos, MyLayoutDime中的方法都增加了前缀my。 比如原来的: A.leftPos.equalTo(@10) ==> A.leftPos.myEqualTo(@10)
uBound,lBound
方法时可以指定其他任意视图的问题。##V1.2.5(2016/10/8)
beginLayoutBlock
和endLayoutBlock
的调用时机,以及解决了可能这两个block块会出现循环引用的问题,同时优化了viewLayoutCompleteBlock
可能会出现循环引用的问题noBoundaryLimit
,用来实现那些只要单向浮动且没有边界限制的场景。(具体见FOLTest6ViewController应用)。estimateLayoutRect
,优化了那些布局套布局的尺寸的评估的计算方法,加快了对动态高度评估计算的速度。添加了新的布局:路径布局MyPathLayout。通过路径布局您只需要提供一个生成路径曲线的方程、以及指定子视图在路径曲线之中的距离等信息就可以让子视图按照指定的路径曲线进行布局,因此路径布局可以实现一些非常酷炫的效果。(具体见PLTest1,2,3,4ViewController应用)
添加了子视图的新方法:@property(nonatomic,copy) void (^viewLayoutCompleteBlock)(MyBaseLayout* layout, UIView *v);
这个方法是在每个子视图布局完成后会调用一次,然后自动销毁。您可以实现这个block来进行一些子视图布局完成后的设置,一般实现这个块用来完成一些特定的动画效果,以及取值操作。(具体见RLTest1ViewController,PLTest1ViewController应用)。
添加了对布局视图里面的子视图通过transform进行坐标变换的支持功能,在您对子视图进行坐标变换操作时,您可以可以通过设置扩展属性来确定子视图的尺寸和位置。
adjustScrollViewContentSize
~~被设置为过期,改为通过adjustScrollViewContentSizeMode
属性来设置当布局视图加入到UIScrollView时调整其contentSize的方式。weight
属性时可能导致的计算不正确的问题。流式布局MyFlowLayout中的子视图添加了对weight
属性的支持,流式布局中的weight
属性表示的是剩余空间的占比。通过weight
属性的使用,我们可以在很多用线性布局实现的布局,改用流式布局来完成,从而减少布局的嵌套。流式布局具有HTML中的Flex的特性。(具体见FLLTest4ViewController应用)。
布局视图增加了子视图反序排列的功能属性:@property(nonatomic, assign) BOOL reverseLayout;
这个属性可以按子视图添加的逆顺序进行界面布局。(具体见AllTest4ViewController应用).
weight
计算的问题,由原先的减间距再乘比例改为先乘比例再减间距##V1.2.0(2016/6/13)
myLeftMargin,myRightMargin
并且设置了gravity=MyMarginGravity_Horz_Center
时前者设置失效的问题。水平线性布局亦然。setSubviewFloatMargin
(具体见:FOLTest4ViewController)。rowSpacing
和列间距:colSpacing
两个属性,用来设置表格的行和列之间的间距。 (具体见TLTest2ViewController)layoutAnimationWithDuration
用来实现布局时的动画效果。(具体见:各个DEMO)flexedHeight
属性对于UIImageView的支持。当对一个UIImageView设置flexedHeight
为YES时则其在布局时会自动根据UIImageView设置的宽度等比例缩放其高度。这个特性在瀑布流实现中非常实用。(具体见TLTest2ViewController)subviewMargin、subviewVertMargin、subviewHorzMargin
三个新属性,用来设置浮动布局中各视图的水平和垂直间距。 (具体见:FOLTest4ViewController,FOLTest5ViewController)min,max
两个方法只能用来设置最小最大的常数值。MyLayoutDime新增加的方法lBound,uBound
则功能更加强大。除了可以设置常数限制尺寸外,还可以设置对象限制尺寸。(具体见:AllTest2ViewController,AllTest3ViewController)addRow:colSize:以及insertRow:colSize:atIndex
的方法名,将原来的colWidth改为了colSize
。 (具体见:TLTest2ViewController)##V1.1.6(2016/5/3)
equalTo
方法添加可以等于自身的功能。比如a.widthDime.equalTo(a.widthDime).add(10);
表示视图a的最终宽度等于其本身内容的宽度再加上10. 这种设置方法不会造成循环引用,主要用于那些需要在自身内容尺寸基础上再扩展尺寸的场景,(具体见: FLLTest2ViewController).gravity
的值为MyMarginGravity_Horz_Fill
或者MyMarginGravity_Vert_Fill
;拉伸尺寸需要设置属性averageArrange
的值为YES;自动排列则需要设置属性autoArrange
的值为YES。(具体见*FLLTest2ViewController)。noLayout
。这个属性设置为YES时表示子视图会参与布局,但是并不会真实的调整其在布局视图中的位置和尺寸,而布局视图则会保留出这个子视图的布局位置和尺寸的空间。这个属性和useFrame
混合使用用来实现一些动画效果。(具体见FLLTest3ViewController)wrapContentHeight
和wrapContentWidth
设置为YES的功能。highlightedOpacity
,用来指定当布局Touch事件的高亮不透明度值。(具体例子见:AllTest1ViewController)wrapContentHeight
和 wrapContentWidth
可能计算不正确的问题。leftBorderLineLayer
的宽度不正确的问题。clear
,以便能快速的清除掉所有的设置。##V1.1.4(2016/3/10)
estimateLayoutRect
的一个多层嵌套是无法正确评估尺寸的BUG。myMargin
用来简单快速的设置myLeftMarign,myTopMargin,myRightMargin,myBottomMargin都是相等的值。MyDimeScale
这个工具类,用来实现不同屏幕的尺寸和位置的缩放的功能,加入我们的UI给我们的是iPhone6的设计图,并指定了某个视图的高度为100但又同时希望在iPhone5上高度缩小,而在iPhone6Plus上高度增加,则可以通过[MyDimeScale scale:100]
得到各种屏幕的缩放后的值了。##V1.1.3(2016/2/22)
MySizeClass_Portrait
和横屏MySizeClass_Landscape
。以便支持单独的横屏和竖屏的界面适配,尤其是对iPad设备的横竖屏进行区分适配。##V1.1.2(2016/2/18)
arrangedCount
设置为0时则表示按内容约束方式进行布局。mySize
,以便为了简化同时设置myWidth,myHeight的能力。 #define MY_USEOLDMETHODDEF 1
和 #define MY_USEOLDMETHODNOWARNING 1
。 #define MY_USEOLDENUMDEF 1
和 #define MY_USEOLDENUMNOWARNING 1
来兼容老版本。此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。