何为autoLayout(自动布局,相对布局)? 按照我粗浅的理解,autolayout就是描述用来描述视图(控件)与视图之间的关系的一种工具;
当然,这种关系包括,子视图与子视图(如一个view上的两个button),子视图与父视图的关系(如一个Button距离他的父视图view右边界的距离);有大小关系(等高等宽),边界距离关系,有中心点(centerX 和 centerY)关系也有比例缩放(ratio)关系;
autolayout的原理实际上是基于数学的一次方程求解,最终算出 约束值;按照这个说法,如果你给一个一次方程组,能产生不同的结果,storyboard就不可能计算出唯一的正确的约束结果;例如,你添加了两个会产生冲突的约束(例如:一个button距离父视图view左边20距离右边100,又增加一个 centerX与父视图等中心的约束就会产生冲突);所以我们给出的约束,必须是没有冲突的(只要没有冲突,重复的约束是可以的,例如你在一个方程组中间重复的写了一个方程式,结果是不会变的);
autolayout原理示例: view上四个button,距离边界都是0,且等宽,那么 我们可以列出一个方程式 4 X = screenWidth;这样我们就可以求解出每一个button的宽度了
上面的描述,可能会有些抽象,我在后续的教程中会附上图片和代码,让大家可以更具体的了解autolayout
总结一下autolayout的使用原则: 1.所添加的约束,必须是能够确定一个视图的位置和大小的 2.所添加的约束,必须是可以计算的,能唯一得出 宽高或者边界值的 3.所添加的约束,必须是不冲突的,否则会导致崩溃(可以重复) 4.所添加的约束,在storyboard上默认是相邻的最近的视图之间的约束 5.所添加的约束,可能会不方便对该视图做相关约束的动画 6.所添加的约束,最好是以一个视图为基准添加,这样有利于修改,牵一发而动全身
7.autolaout可以和Frame绝对布局混合使用
时间: 2024-10-12 09:44:40