iOS屏幕适配之Autolayout--storyboard及xib基础用法

首先来简单的认知屏幕适配的发展历史

  • iPhone3GS\iPhone4
    • 屏幕尺寸固定,没有屏幕适配
    • 全部用frame、bounds、center进行布局
    • 很多值固定:坐标值、宽度高度值全部写死,网上一些老的代码都是这样的
UIButton *btn = [[UIButton alloc] init];
btn.frame = CGRectMake(0, 0, 320 - b, 480 - c);
UIView *view = [[UIView alloc]init];
view.frame = CGRectMake(20,20,50,100);
...

⚠完全没有适配可言,全部是固定的值

  • iPad出现、iPhone横屏
    • 出现Autoresizing技术
      • 让横竖屏适配相对简单
      • 让子控件可以跟随父控件的行为自动发生相应的变化
      • 现在使用的前提是:需要关闭Autolayout功能
      • 局限性
        • 只能解决子控件跟父控件的相对关系
        • 不能解决同级控件之间的相对关系
  • iOS 6.0(Xcode4)开始
    • 出现了Autolayout技术
    • 从Xcode5.0(iOS 7.0)开始,开始流行Autolayout

Autolayout讲解

  • storyboard和xib上Autolayout的使用

    • Add New Constrains 设置单个控件的约束能设置很多约束,详解见图

    • 点击

      会出现下图,还是较清楚的解释:


      iOS屏幕适配之Autolayout--storyboard及xib基础用法_第1张图片
    • 在iOS8中加入了一个constrain to margins


      iOS屏幕适配之Autolayout--storyboard及xib基础用法_第2张图片
    • 系统默认帮你选中,则会依照layoutMargins的位置作为起点来进行约束,左右会有8个点的空挡,而是从8个点后开始计算约束,而没有选中时,从屏幕的0点开始计算。(一般我都直接取消选中,不然会与预想的不一样,不知道你们有么有遇见过这样的问题)

    • Update Frames 有三个选项
      iOS屏幕适配之Autolayout--storyboard及xib基础用法_第3张图片
      • 默认是None在约束后不会有位置发生变化,但会出现一个黄色的框框,就是你新约束的frame,并且这个时候会有个黄色警告箭头表示当前view的frame不匹配,需要更新frame。
        ! 点击黄色尖头后会告诉你警告的原因.


        iOS屏幕适配之Autolayout--storyboard及xib基础用法_第4张图片
      • 还有个红色的箭头,表示当前有错误约束:1.约束冲突,需要删除冲突的部分条件。2.约束条件不完善,需要添加完善约束(就是让编译器明确view的frame)


        iOS屏幕适配之Autolayout--storyboard及xib基础用法_第5张图片
    • 选中Items of New Constrains会设置新frame同时把选中的控件的frame更新,即不会出现黄色框框。

    • 选中All Frames in container,如果你所有的控件都已经约束好了,那可以选择这个选项,一次性更新所有的控件。

  • Add New Alignment Constrains 设置多个控件之间的约束

    • 点击

      会出现下图


      iOS屏幕适配之Autolayout--storyboard及xib基础用法_第6张图片
      图片还是能较清晰的解释如何设置约束
以上两个按钮能满足你大多数的控件约束,也非常的方便,当你想修改之前约束的条件,方法也非常多。
  • 选中控件然后点击


    iOS屏幕适配之Autolayout--storyboard及xib基础用法_第7张图片

    会出现当前控件的约束


    iOS屏幕适配之Autolayout--storyboard及xib基础用法_第8张图片
    点击约束条件中的Edit就可以修改当前设置。
  • 删除原先约束,重新设置约束,比较笨的方法但也是可以达到效果。
  • 还可以直接选中storyboard或xib中控件约束好的线,双击也是能修改的


    iOS屏幕适配之Autolayout--storyboard及xib基础用法_第9张图片
看个人爱好吧!
  • 对于删除错误的约束也有多种方法


    iOS屏幕适配之Autolayout--storyboard及xib基础用法_第10张图片

    图中选中的红框中,都可以删除某一条约束。

    • 还有一次性删除约束的方法


      iOS屏幕适配之Autolayout--storyboard及xib基础用法_第11张图片

      图中有两个Clear Constrains,上面的代表清除当前选中view的所有约束,下面的会清除所有view的约束,不管是否选择,所以不要轻易选择下面的Clear Constrains,以免之前约束都作废,还是会让人抓狂滴。

以上是Autolayout在 storyboard以及xib使用的部分内容,以后会继续补充。欢迎大虾来更正以及深层次的补充!

你可能感兴趣的:(iOS屏幕适配之Autolayout--storyboard及xib基础用法)