iOS屏幕适配

iOS屏幕适配

iOS屏幕适配发展史

1> iPhone4以前(没有iPad)

    * 不需要屏幕适配

2> iPad、iPhone5等设备出现

    * 需要做横竖屏适配

    * autoresizing

        a) 解决子控件和父控件的适配问题

        b) 子控件跟随父控件的一些行为进行自动调整

3> iOS 6.0开始

    * autolayout

        a) 解决任何控件的适配问题

        b) 一个控件可以跟随其它任意控件的一些行为进行自动调整

autoresizing

  • 1、autoresizing适用范围
    • 解决子控件和父控件的适配问题
    • 子控件跟随父控件的一些行为进行自动调整
  • 2、代码实现
      UIView *blueView = [[UIView alloc]init];
  •   blueView.backgroundColor = [UIColor blueColor];
  •   blueView.frame = CGRectMake(100, 100, 200, 100);
  •   // 这里是设置blueView的宽、高、右侧与父容器的距离、上边与父容器的距离一定!
  •   blueView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin;
  •   [self.view addSubview:blueView];

autolayout

  • 1、什么是autolayout
    • Autolayout是一种“自动布局”技术,专门用来布局UI界面的
    • Autolayout自iOS 6开始引入,由于Xcode 4的不给力,当时并没有得到很大推广
    • 自iOS 7(Xcode 5)开始,Autolayout的开发效率得到很大的提升
    • Autolayout能很轻松地解决屏幕适配的问题
  • 2、代码实现autolayout
    • 利用NSLayoutConstraint类创建具体的约束对象
    • 添加约束对象到相应的view上
      -(void)addConstraint:(NSLayoutConstraint *)constraint;
      -(void)addConstraints:(NSArray *)constraints;
  • 3、代码实现Autolayout的注意点 
    • 要先禁止autoresizing功能,设置view的下面属性为NO
      view.translatesAutoresizingMaskIntoConstraints = NO;
    • 添加约束之前,一定要保证相关控件都已经在各自的父控件上
    • 不用再给view设置frame 
  • 4、NSLayoutConstraint
    • 一个NSLayoutConstraint对象就代表一个约束
    • 创建约束对象的常用方法
      +(id)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c;
      • 参数说明:
        • view1 :要约束的控件
        • attr1 :约束的类型(做怎样的约束)
        • relation :与参照控件之间的关系
        • view2 :参照的控件
        • attr2 :约束的类型(做怎样的约束)
        • multiplier :乘数
        • c :常量
    • 自动布局核心公式
      obj1.property1 =(obj2.property2 * multiplier)+ constant value

你可能感兴趣的:(ios,屏幕适配)