AutoResizing and AutoLayout(IOS屏

作者: IIronMan | 来源:发表于2016-06-17 22:51 被阅读167次

    简介:

    • 1.在以前的IOS程序中,是如何设置布局UI界面的?
      解决方式:
      (1)经常编写大量的坐标,计算代码
      (2)为了保证3.5 inch和4.0 inch屏幕上都能有完美的UI界面效果,有时候还需要为两种屏幕编写不同的坐标计算代码(即传说中的“屏幕适配”)

    • 什么是AutoLayout?
      (1)AutoLayout是一种“自动布局”技术,专门用来布局UI界面的
      (2) AutoLayout自IOS 6开始引入,由于Xcode 4的不给力,当时并没有得到很大推广
      (3)自IOS7(xcode5)开始,AutoLayout的开发效率的到很大的提升
      (4)苹果官方也大力推荐开发者尽量使用AutoLayout来布局UI界面

    • 2.Autoresizing
      (1)在Autolayout之前,有Autoresizing可以作为屏幕适配,但局限性很大,有些任务根本无法完成
      (2)相比之下,AutoLayout的功能比Autoresizing强大很多

    • 3.AutoLayout的两大核心概念
      (1)参照
      (2)约束

    • 4.Autolayout 的报警与错误

      (1)报警:控件的frame不匹配所添加的约束,比如
      :比如约束空间的宽度为100,而控件现在的宽度为110
      (2)错误:1.缺乏必要的约束,比如
      :只约束了宽度和高度,没有约束具体的位置
      错误2.两个约束冲突,比如1个约束控件的宽度为100,一个约束控件的宽度为110;

    • 介绍:AutoResizing and AutoLayout都是进行屏幕的适配方法
      ![Uploading 屏幕快照 2016-06-17 上午9.13.16_016526.png . . .],由于AutoResizing不完美就出现了AutoLayout,二者只能存在一个,正所谓一山不能容二虎。

    AutoLayout与SizeClass都勾选 AutoLayout与SizeClass都不勾选

    1.Autoresizing讲解

    • 首先Autoresizing是在Autolayout之前的,它主要的功能:1.距离四周距离的固定,2.是否随着父控件的变化而变化。它是由Bug的,有些需求它是做不出来的,这时候Autolayout就诞生了。
    • 再来说一下它只适用于简单的布局,对于复杂的布局它有很大的缺陷,今后记住不要再使用就好了,下面来看一下它的具体用法
    Autoresizing的视图拉伸

    代码约束如下:

       /*
     
     UIViewAutoresizingNone                 = 0,不用约束
    
     UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,
     UIViewAutoresizingFlexibleRightMargin  = 1 << 2,
     UIViewAutoresizingFlexibleTopMargin    = 1 << 3,
     UIViewAutoresizingFlexibleBottomMargin = 1 << 5
     
     UIViewAutoresizingFlexibleWidth        = 1 << 1,
     UIViewAutoresizingFlexibleHeight       = 1 << 4,
     
     */
    
    self.view.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
    

    2.Autolayout 的讲解(极力推荐大家使用)

    CCCFC73D-109C-4C7D-A555-09E805B4EB6B.png
    • 如果使用Autolayout来约束我们的控件,那frame就失效了官方不建议再设置frame了
      切记:用Autolayout就不要再使用frame
      宽度:100 宽高在pin里面约束
      高度:100
      x:水平居中
      y:垂直居中
      注意;如果利用Autolayout 约束一个控件,和我们以前使用frame约束控件一样,必须设置宽度和高度以及/X/Y.如果缺少某一个约束就会报错,有可能引发一些未知的bug, 点击pin进行约束(下面红色的就会消失),不管你选择哪个都会居中

    • 如果有红色警告:代表缺少约束

    • 如果有黄色警告:代表当前位置大小和约束位置大小不一样

    设置一下宽高约束

    任务:1.现在来完成一个需求 :设置一个View使它处在控制器view的上下左右各20的边距

    效果图 对范围的设置于

    距离顶部:20相当于设置了Y;
    距离左边:20,相当于设置了X;
    距离右边20,相当于设置了宽度;
    距离底部20,相当于设置了高度;

    任务:2.设置两个方格之间的距离为20,且他们到两边的距离也是20;

    注意:在使用AutoLayout时,最好给每一个控件起一个名称,方便阅读

    相关文章

      网友评论

      • 超_iOS:有个疑问就是ui给的图比如标记一个视图宽高都是100,那么在autolayout中是否也设置成100///这样就会不会出站在5和6上这个视图看着不一样大的情况。到底怎么搞

      本文标题:AutoResizing and AutoLayout(IOS屏

      本文链接:https://www.haomeiwen.com/subject/jzqvdttx.html