AutoLayout ——1、屏幕适配废话篇

1. iPhone屏幕适配的原因和解决方案

1422587297122067.jpg

初代 iPhone
2007 年,初代 iPhone 发布,屏幕的宽高是 320 x 480 像素。下文也是按照宽度,高度的顺序排列。这个分辨率一直到 iPhone 3GS 也保持不变。

那时编写 iOS 的 App(应用程序),只支持绝对定位。比如一个按钮(x, y, width, height) = (20, 30, 40, 50),就表示它的宽度是 40 像素,高度是 50 像素,放在(20, 20)像素的位置。

iPhone 4
2010 年,iPhone 4 发布,率先采用 Retina 显示屏,在屏幕的物理尺寸不变的情况下,像素成倍增加,达到 640 x 960 像素。

这样就出现一个问题,怎么让原有的 App 运行在新的手机上面?iPhone 手机一个优势,就是有众多优秀的 App,假如不兼容原有的 App,就相当于放弃这个得来不易的优势,是很不明智的。

为了运行之前的 App,apple 引入一个新的概念 point(点)。点这个概念在 iOS 开发中十分重要,而实际用户很少关注。iPhone 4 屏幕尺寸继续保持 320 x 480,不过单位并非是像素,而是点。

  • 在 iPhone 3GS 中,1 个点等于 1 个像素
  • 在 iPhone 4 中,1 个点等于 2 个像素

(也就是说,点跟像素可以直接互换)

iPhone 4 和 iPhone 3GS 的屏幕尺寸实际上是一样的,都是 3.5 英寸。都是 320 x 480,程序员使用的是 320 点 x 480 点,实际的像素和开发没有半毛钱关系。iPhone4 在使用图片的时候需要使用 @2x的图片。 iPhone 4 在单位英寸上像素更多,看起来更细腻。


在这之前的布局方式是直接写 frame 进行屏幕适配。


**iPad **
iPad 的物理尺寸是 768 x 1024 。界面变大了,加上 iPad 可以进行四个方向的旋转。相对于开发者来说就是横屏和竖屏。横竖屏的互换就会倒置 768 x 1024 进行互换。变为 1024 x 768 。

为了进行横竖屏的适配就必须加入横多的判断才行。
apple 推出了 Autoresizing 来进行屏幕的适配。 让控件随着父控件的拉伸而拉伸。(这种方式适配减少了很多的判断代码的书写)
通过简单的设置 Autoresizing 就可使之前的 app 进行横屏和竖屏适配。


iPad 的布局方式是直接写 **frame + Autoresizing ** 进行屏幕适配。


**iPhone 5 **
12 年 iPhone 5 的发布,一切都发生了改变。屏幕的物理尺寸变为 320 x 568。

这样就又出现了一个问题。 通过 frame 的方式进行屏幕的适配不是那么的方便了。需要在写 UI 界面的时候写很多的 if 语句来判断屏幕的尺寸进行 frame 计算和设置。多出来的 44 个点怎么搞。

iPhone5的屏幕将变为4寸,开发者即将面临为不同尺寸屏幕进行应用适配的工作。基于这样的情况,Apple大力推广使用AutoLayout的方法来进行UI布局,以一举消除适配的烦恼。

让更多地控件产生联系,可以约束各个控件之间的距离。

**iPhone 5c 和 iPhone 5s **
iPhone 5c 和 iPhone 5s 的发布对屏幕的适配没有产生什么影响。物理尺寸变为 320 x 568 , 尺寸还是 4 寸

iPhone 6 和 iPhone 6P
14 年发布 iPhone 6 和 iPhone 6P,一切又再一次发生了变化。 变化还非常的大。 iPhone 6 物理尺寸变为 375 x 667 iPhone 6P 物理尺寸变为 414 x 736。 特么完全摸不到边了有没有。

看完后疯了一堆人。 后来发现也没疯。基本使用的还是 AutoLayout 进行布局适配。

apple 同步的推出了 SizeClass, SizeClass 主要用于不同屏幕进行适配。

SizeClass 在后续的开发中基本没人用。 主要是不好用。

未命名图片.png

apple 屏幕适配的基本发展历程都在这里!

从写死的 frameframe + Autoresizing 再到 autolayout 再到 sizecalss

2.关于自动说明的概念说明

  • Autoresizing :让控件随着父控件的拉伸而拉伸。
  • autolayout:让更多地控件产生联系,可以约束各个控件之间的距离。
  • sizecalss:根据不同设备尺寸进行布局。

Autolayout的2个核心概念
参照
约束

3. 使用 Autolayout 的方式

  1. 通过代码的方式添加约束
    1.1. 使用默认的约束类添加约束
    1.2. 使用 VFL 语言添加约束
    1.3. 使用第三方封装的框架进行添加约束(Masonry)
  2. 通过在 storyboard 里面可视化的添加约束.

4. 关于自动布局要注意的问题

  1. 要固定一个控件最多4个约束(有内建宽高的只需要2个约束就可以布局一个控件)
  2. 关于警告:
    黄色警告:
Snip20151029_5.png

表示当前控件的 Frame 和约束的 Frame 不符合 . 个人喜欢使用快捷键接解决问题: "cmd" + "option" + " =" 解决问题

红色警告:

Snip20151029_6.png

1.1.表示 缺少约束 (控件的位置或大小不能确定)
1.2. 约束冲突 (控件的约束过多, 系统不知道跟随哪一个约束)

扩展阅读
IOS自动布局之Autoresizing
Autolayout及VFL经验分享
iOS自动布局进阶用法
Masnory进行autolayout等间隙排列
iOS屏幕适配
Autolayout
5月31日-Autoresizing
iOS开发- iPhone6/6 Plus适配

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容