随着iOS设备屏幕尺寸的增多,当下无论是纯代码开发还是Xib/StoryBoard开发,自动布局已经是必备的开发技能了。
我使用自动布局也有一段时间了,遇到了不少问题,在解决的过程中也收获了很多知识。尤其是在使用熟练之后开发速度上的提升非常明显。这里把AutoLayout的基本使用和个人使用心得汇总一下,希望能帮助到大家!
适配的概念适配主要分两种
-
系统适配
系统适配主要指适配不同版本系统,如 iOS 6(拟物化) 到 iOS 7(扁平化)两个系统系统的适配,我们需要写不同的代码来保证项目在不同系统上的美观与可用。
-
屏幕适配
屏幕适配主要是针对不同尺寸的屏幕进行适配,同一个页面再不同尺寸屏幕上的布局,如Safari在手机横竖屏下的布局等等。
常见设备的分辨率:

Snip20170313_1.png
- iPhone 4s 以前的时代
iPhone 4s 和之前设备的屏幕都是3.5英寸,可以说没有屏幕适配,所有的坐标点就是 320*480. 适配完全使用frame、bounds、center进行计算,代码基本写死。
// 直接写死
UIImageView *iv = [UIImageView new];
iv.frame = CGRectMake(50, 300, 200, 80);
[self.view addSubview:iv];
-
iPad、iPhone横屏时代
-
出现 AutoResizing 技术
-
优点:
- 解决了父子控件相对位置的问题
- 子控件可根据父控件的行为发生相对应的变化
- 让横竖屏的适配变得简单
- 无法处理兄弟控件相对位置的问题
-
使用前提:
- 关闭AutoLayout
-
局限性:
- 只能解决父子控件的相对关系,
- 无法解决兄弟控件之间的相对关系
-
-
AutoResizing在Xib中的使用介绍
在Xib中主要有6根线来设置AutoResizing
-

Snip20170313_2.png
外部四根线
外部四根线分别表示上、下、左、右四个方向,子控件相对于父控件的距离。
实线:表示固定位置
虚线:表示非固定位置
**内部两根线**
内部两根线分别表示水平和竖直方向,子控件是否根据父控件等比例缩放。
实线:该方向上跟随父控件等比缩放
虚线:该方向上不跟随父控件等比缩放
- **AutoResizing在代码中的使用介绍**
通常代码中子控件在添加到父控件之前设置AutoResizing对应的属性值,其代码属性值和Xib中相反,代码中设置可变部分,Xib中是选中部分为固定不变的。
// 上下左右四个方向参数(与Xib中设置相反)
UIViewAutoresizingNone = 0,
UIViewAutoresizingFlexibleLeftMargin = 1
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?