什么是Autolayout

什么是Autolayout

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

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

  • Autolayout的2个核心概念

    • 参照
    • 约束
2.Autolayout常用面板
什么是Autolayout_第1张图片
Autolayout常用面板01-约束处理.png
什么是Autolayout_第2张图片
Autolayout常用面板02-相对.png
什么是Autolayout_第3张图片
Autolayout常用面板03-对齐.png
3.Autolayout的警告和错误
黄色警告.png
  • 警告
  • 控件的frame不匹配所添加的约束,比如
  • 比如约束控件的宽度为100,而控件现在的宽度是110
红色错误.png
  • 错误
  • 缺乏必要的约束,比如
  • 只约束了宽度和高度,没有约束具体的位置
4.代码实现Autolayout
  • 代码实现Autolayout的步骤
  • 利用NSLayoutConstraint类创建具体的约束对象
  • 添加约束对象到相应的view上
  - (void)addConstraint:(NSLayoutConstraint *)constraint;
  - (void)addConstraints:(NSArray *)constraints;
  • 代码实现Autolayout的注意点
  • 要先禁止autoresizing功能,设置view的下面属性为NO
view.translatesAutoresizingMaskIntoConstraints = NO;
  • 添加约束之前,一定要保证相关控件都已经在各自的父控件上
  • 不用再给view设置frame
5.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:常量
6.自动布局的核心计算公式
  • 自动布局的核心计算公式
obj1.property1 =(obj2.property2 * multiplier)+constant value

你可能感兴趣的:(什么是Autolayout)