Autolayout-Autoresizing与Autolayout

作者:Mitchell 

一.关于iPhone屏幕的一些基本常识###

1.ios屏幕适配的尺寸####

  • iPhone的尺寸
    3.5inch、4.0inch、4.7inch、5.5inch
  • iPad的尺寸
    7.9inch、9.7inch

2.点和像素的关系####

  • 非retina屏幕之中:
    • 1个点由1x1个像素组成
  • 在retina屏幕之中:
    • 1个点由2x2个像素组成(iPhone6Plus 3x3个)

二、Autoresizing###

1、简介####

  • 在Autolayout之前,可做屏幕适配,但是有很大局限性。

2、具体使用方法以及局限性####

(1)用法#####
  • Autoresizing的核心用法就是6条线。上线左右以及空间内的两条红色交叉线如图:


    屏幕快照 2015-08-01 下午1.37.11.png
  • 具体用法:上下左右四条红色的线分别表示此视图距离父视图的上下左右边的约束各式多少;
  • 中间两条上下交叉的线表示,此视图的高度与宽度是否随着父视图的变化而按比例变化
(2)局限性#####

可以清楚的看到上面的用法中所说明的,所有的约束都是相对于父视图来设置的,也就是Autoresizing的局限性'就是'只能表现父与子的关系而无法表达兄弟视图之间的关系,这就是Autoresizing的鸡肋所在。


三、Autolayout###

1、简介####

  • Autolayout是一种布局技术,专门用来布局UI界面的
  • Autolayout自iOS6开始引入,由于Xcode4的不给力,当时并没有得到很大的推广
  • 在iOS7(Xcode5)开始,Autolayout的开发效率得到很大的提升
  • 苹果官方也推荐开发者尽量使用Autolayout来布局UI界面
  • Autolayout能轻松的解决屏幕适配的问题

2、核心概念####

  • 参照
  • 约束

3、常用版面####

(1) 约束处理(resolve auto layout issues):#####
  • 界面样式:
    屏幕快照 2015-08-01 下午6.53.09.png
  • 属性说明:
    (1) Selected Views:已选中视图的属性
    • Update Frames:更新frame
    • Update Constraints:更新约束
    • Add Missing Constraints:添加丢失的约束
    • Reset to Suggested Constraints:将约束重置成建议的样式

(2) All Views inView Controller:在控制器中的所有视图的属性
- Clear Constraints 删除控制器中所有的约束(慎用)

(2) 相对处理(Pin):#####
  • 界面样式:


    屏幕快照 2015-08-01 下午6.53.01.png
  • 属性说明:
    • Add New Constraints:
      4个方向,4条红线的意思分别表示:距离上下左右的参照线的距离是多少。将虚线设置为实线之后,表示所设距离生效。
      注意:上下左右的参照物是可以改变的,改变的方法就是点击数字框右边的向下箭头来修改约束的参照物。
    • Constrain to margins:如果你点了constrain to margins,左右会有8个点的空挡,而是从8个点后开始计算约束,而没有点时,已屏幕的0点开始计算。
(3) 对齐处理(Align):#####
  • 界面样式:


    屏幕快照 2015-08-01 下午6.52.55.png
  • 属性说明:
    • Leading Edges:左对齐
    • Trailing Edges:右对齐
    • Top Edges:上对齐
    • Bottom Edges:下对齐
    • Horizontal Centers:水平中心对齐
    • Vertical Centers:竖向中心对齐
    • Baselines:基线对齐
    • Horizontal Center in Container:对齐容器中的水平中心
    • Vertical Center in Container:对齐容器中的竖向中心

4、警告与报错####

  • 警告:一般是黄色的,一般是由于我们当前所设的约束与当前视图的位置不符。
  • 报错:红色的警告一般是由于约束错误造成的,这种警告工程中一定要消除。

5、简单需求实例####

  • 实例一:
    • 需求:创建一个view使得它与上方的距离20,左方的距离20,高100,宽100
    • 实现:


      实例1.png

实例1.2.png

两张图片的区别就是在Update Frames 中选择了Items of New Constraints 这个属性的意思是当我选择了这个属性之后,系统会在添加约束的同时自动将视图布局到约束所定义的位置与大小。

  • 实例二:
    • 需求:创建两个view,左边的view距离左、上各20,右边的view距离右、上各20,两个图片一样的大小,并且两张图片之间的距离是20。


      实例2初始图.png
    • 思路:
      (1)设置视图1:距离上面20,距离左边20Height设为100,这样视图1未确定的值就只有宽了,这个时候我们为视图1添加右边的约束属性,如下图所示,将参照的视图改为view2,这样我们就设置好了view1的所有属性。

      实例2-1.png

      (2)设置视图2:与视图1的上方平齐,距离右边20,与视图1等高,距离视图1的距离是20,最后再设置两个视图是等宽,这样就实现了我们的需求:

    • 实现:
      (1)视图一设置:


      实例2.1.png

      (2)视图二设置:


      实例2.2.png

      (3)最终实现:
      实例2.png
  • 实例三:
    • 需求:view1使得它与上方的距离20,左方、右方的距离各为20,高50,view2在view1下方距离20,右边距离父视图20(与view1右对齐),view2的宽度是view1的一半。
    • 实现:
      (1)先固定view1,设定左右上的约束并设定高为50.
      实例3.1.png

      (2)这个需求的重点是设置view2,首先与view1上方距离20,右边与view1对齐,那么宽度的设置体现了Autolayout的精华所在。
    • 方案一:先设置view2与view1等宽,之后双击view2的等宽的线,将multiplier的值设为0.5。


      实例3.2.png
    • 方案二:
      (1)设置view2的居中对齐


      实例3.3.png

      (2)修改SecondItem中的属性为Leading,这样我们就实现了需求中所要的效果


      实例3.4.png

6、AutoLayout核心公式####

第一个Item的属性 =(<=/>=)第二个Item的属性*Multiplier+Constant

这就是Autolayout的精华所在.

7、总结####

  • Autoresizing:
    已经是比较过时的设置适配方法了,而且有很大的缺陷,只能设置父子控件之间的约束,不能设置兄弟控件之间的约束。所以在这里我们最好不要再开发中应用。
  • AutoLayout:
    最流行的适配方式,苹果积极推荐,非常强大好用的适配方法。对提升开发中的效率有很大的帮助。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容