iOS AutoLayout自动布局中级开发教程(1)-浅谈autolayout

何为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

iOS AutoLayout自动布局中级开发教程(1)-浅谈autolayout的相关文章

iOS AutoLayout自动布局中级开发教程(2)-初识autolayout

通过storyboard,我们初识一下autolayout的表现形式: 看下图,使用storyboard创建的两个控件视图: 上图中的四个圆角框内的距离值,就是约束; 比如上图的第二个视图,他的 约束是:  距离 view左边,右边界的距离,这样就确定了 宽度和水平方向上的位置,还有距离上面(第一个)视图的距离,还有高,这样就确定了 视图的高度和y轴的位置;这样就可以在一个二维空间(屏幕)中唯一的确定这个视图的位置了; 但是,需要注意的,在添加距离上一个视图下边界的约束时,第一个视图的位置一定要

iOS AutoLayout自动布局中级开发教程(5)-修改约束的值,延迟加载

如何修改autolayout 约束的值? <span style="font-family:SimSun;">目前我已知的方法有5种 1.修改frame(有时候可能会不起作用,但可以做动画) 2.修改约束的float值 3.使用VisualFormat 语言 4.使用 constraintWithItem,按倍率改变   如  2x+1=Y  5.移除约束(remove at runtime),添加新的约束</span> 前面的文章已经讲到如何使用storybo

iOS AutoLayout自动布局中级开发教程(4)-label等文字自动适应大小,宽度

相比大家会经常遇到  label  或则  textfield等显示文字的  视图时,显示不全,或者无法自动 变化长度  ,自动改变字体的 设置: 今天给大家演示一下,如何 在autolayout让label 适应 不同的 宽度: 1.自动 改变字体: 首先设置好 label 的约束,包括宽高之后,默认来看 你的  label是不变了 ,但是 当遇到 文字较多时,就会出现显示不全的问题: 如图,我们设置好 Label的宽度和高度,和其他约束,固定住 label, 这是我们增加label的字数..

iOS AutoLayout自动布局中级开发教程(7)-底部顶部baseLine基线对齐

如何对多个view或者Button添加底部对齐顶部对齐等等类似的对齐约束呢?最简单的方法使用 storyboard,在后续的教程中将使用代码实现. 如下图,如何为这两个或者多个视图添加 底部对齐呢? (或者顶部对齐,左对齐,右对齐,基线baseLine对齐?) 首先说明一下对齐的实质: 顶部或者底部对齐: 本质上就确定了 一个视图的y坐标 左边或者右边对齐:本质上确定了一个视图的x坐标 centerX/Y对齐:确定 x/y坐标 注意对齐的前提是要 这其中的一个的顶部(或者底部,等等)约束已经确定

iOS AutoLayout自动布局中级开发教程(3)-等宽等高等中心

前面讲到了一些关于边界约束的知识,但那些基础知识来解决一些实际问题还是会有点力不从心的;所以我们需要更高级的设置约束的办法,设置等高等宽等中心: 见下图: 图中有3个button按钮, 现在要求3个button等宽,等高 , 且 垂直中心在一条线上,这该如何设置? 按照前面的说法,约束其实是一次方程组的求解,那么 通过观察可以得之,如果我们设置好了button之间的左右边界约束,然后再让3个button等宽就可以; 那么就会有  3x  = 宽度; 所以 每一个Button的宽度就可以计算出来了

Python中级开发教程

Python中级教程索引: 第一课.数据类型                      第十课.图形界面(下) 第二课.再讲数据类型                  第十一课.剪刀石头布游戏与随机函数 第三课.文本处理与色彩(上)             第十二课.获取手机系统信息(上) 第三课.文本处理与色彩(下)             第十二课.获取手机系统信息(下) 第四课.文件操作                      第十三课.选项卡(折叠界面) 第五课.while循环    

iOS开发-委托(Delegate)浅谈

委托其实并不是OC中才有,C#中也有,不过彼此的理解方式是不一样的,OC中委托是协议的一种,需要使用@protocol声明,委托一般在iOS开发中页面中传值用的比较多.委托是Cocoa中最简单.最灵活的模式之一,委托其实字面上的意思就是将需要的事情委托给别人做,业务场景可以参考主视图和子视图之间的页面关系,或者是视图层和数据层之间的交互. 简单的委托 委托通过@protocol声明,可以定义方法,引用委托的对象,需要实现其方法,方法默认都是@required的,同时可以设置为可选的@option

iOS开发项目架构浅谈:MVC与MVVM

MVC MVC,Model-View-Controller,我们从这个古老而经典的设计模式入手.采用 MVC 这个架构的最大的优点在于其概念简单,易于理解,几乎任何一个程序员都会有所了解,几乎每一所计算机院校都教过相关的知识.而在 iOS 客户端开发中,MVC 作为官方推荐的主流架构,不但 SDK 已经为我们实现好了 UIView.UIViewController 等相关的组件,更是有大量的文档和范例供我们参考学习,可以说是一种非常通用而成熟的架构设计.但 MVC 也有他的坏处.由于 MVC 的

iOS Touch ID 简易开发教程

转自:NsstringFromName 支持系统和机型 iOS系统的指纹识别功能最低支持的机型为iPhone 5s,最低支持系统为iOS 8,虽然安装iOS 7系统的5s机型可以使用系统提供的指纹解锁功能,但由于API并未开放,所以理论上第三方软件不可使用. 依赖框架 LocalAuthentication.framework #import <LocalAuthentication/LocalAuthentication.h> 注意事项 做iOS 8以下版本适配时,务必进行API验证,避免调