屏幕适配

方案0

  • 手动代码判断

方案1

  • Autoresizing(iPad出现以后)
  • 局限性: 仅仅能解决子控件和父控件之间的相对关系问题 仅仅能改变位置尺寸, 但是横竖屏切换时, 不同排列结构无法改变(比如上下排列变成左右排列), 控件状态无法改变
  • 用法 UIView里面有一个属性 autoresizingMask

      UIViewAutoresizingFlexibleLeftMargin = 1 << 0,
          距离父控件左边的间距是伸缩的
      UIViewAutoresizingFlexibleRightMargin = 1 << 2,
          距离父控件右边的间距是伸缩的
      UIViewAutoresizingFlexibleTopMargin = 1 << 3,
          距离父控件上边的间距是伸缩的
      UIViewAutoresizingFlexibleBottomMargin = 1 << 5
          距离父控件下边的间距是伸缩的
      UIViewAutoresizingFlexibleWidth = 1 << 1,
          宽度跟随父控件宽度进行伸缩
      UIViewAutoresizingFlexibleHeight = 1 << 4,
          高度跟随父控件高度进行伸缩
    

    意味着, 所有继承自UIView的子控件, 都可以使用Autoresizing进行布局

方案2

  • Autolayout(iOS6开始)

    • 优势

      解决任何控件之间的相对关系问题

    • 局限性:

      仅仅能改变位置尺寸, 但是横竖屏切换时, 不同排列方式无法改变。比如三个控件, 控制水平排放和垂直排放,控件与控件之间的耦合性非常强

方案3

  • UIStackView(iOS9.0开始)

    • 优势

      可以非常快速的进行水平或者垂直布局, 并且可以设置间距。控件之间的耦合性弱

    • 局限性

      只能实现一些有规律的布局(水平或者垂直)。目前为止, 9.0版本过高, 我们依然需要适配低版本

方案四

  • Sizeclass(iOS8开始)

    • 优势

      可以解决不同屏幕状态下的排列方式和控件样式问题。主要是因为可以区分不同的屏幕尺寸, 具体布局还要参照上面方案

    • 局限

      无法区分iPad的横竖屏

results matching ""

    No results matching ""