UI基础7 适配

适配

  • 什么是适配?

  • 适应、兼容各种不同的情况

  • 移动开发中,适配的常见种类

  • 系统适配

    • 针对不同版本的操作系统进行适配
  • 屏幕适配

    • 针对不同大小的屏幕尺寸进行适配

屏幕适配

  • iPhone的尺寸
  • 3.5inch、4.0inch、4.7inch、5.5inch
  • iPad的尺寸
  • 7.9inch、9.7inch
  • 屏幕方向
  • 竖屏
  • 横屏

屏幕适配发展

  • iPhone3GS\iPhone4
    • 没有屏幕适配可言
    • 全部用frame、bounds、center进行布局
    • 很多这样的现象:坐标值、宽度高度值全部写死
UIButton *btn1 = [[UIButton alloc] init];
btn1.frame = CGRectMake(0, 0, 320 - b, 480 - c);
  • iPad出现、iPhone横屏

    • 出现Autoresizing技术
      • 让横竖屏适配相对简单
      • 让子控件可以跟随父控件的行为自动发生相应的变化
      • 前提是:关闭Autolayout功能
      • 局限性
        • 只能解决子控件跟父控件的相对关系问题
        • 不能解决兄弟控件的相对关系问题
  • iOS 6.0(Xcode4)开始

    • 出现了Autolayout技术
    • 从Xcode5.0(iOS 7.0)开始,开始流行Autolayout

什么是Autolayout

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

Autolayout的警告和错误

  • 警告

    • 控件的frame不匹配所添加的约束, 比如
    • 比如约束控件的宽度为100, 而控件现在的宽度是110
  • 错误

    • 缺乏必要的约束, 比如

    • 只约束了宽度和高度, 没有约束具体的位置

    • 两个约束冲突, 比如

    • 1个约束控件的宽度为100, 1个约束控件的宽度为110

你可能感兴趣的:(UI基础7 适配)