知识点:
1、需要重新布局时,常用的系统方法的调用顺序是怎样的?
答:当一个视图需要重新布局时,系统方法的调用顺序为:
(1) step1:控制器的viewWillLayoutSubViews方法
(2) step2:各个子视图的layoutSubViews方法
(3) step3:控制器的viewDidLayoutSubViews方法
2、AutoResizing和AutoLayout的区别?
答: AutoResizing布局是什么?
比较老的的自动布局技术,操作简单,API简单,功能也简单,有一定的局限性,很久以前叫(struts/spring(架构/弹簧)技术
核心理念:当界面大小发生变化是,对子视图进行同比例的变化
编写代码实现AutoResizing设置视图的autoresizingMask属性即可,代码设置时,规则的描述与在检查器中点亮红线的描述要相反,如,在检查器中点亮左,上为固定距离时,那么用代码描述就要说视图的右、下为长度可变
AutoLayout布局是什么?
苹果设计的新的布局技术,功能强大,操作复杂,从xcode5开始,慢慢好用,在xcode6中,有配合sizeClassed技术完成屏幕适配工作
工作原理
1)通过一系列的“约束constraint”来描述视图的展示位置
2)什么是约束?代表一个条件,只需要设定一些约束,则系统就会根据这一堆约束,自动计算出符合约束的frame;
3)如何创建约束
方式一:在故事板中可视化配置
方式二:用代码创建
4)约束的两个原则
1.描述清楚(如果不清楚,约束变成橙色)
2.互不冲突(如果冲突,回显示红色)
3、使用代码添加约束,添加在什么地方?以及相互冲突的约束如何解决?
答:这个是系统默认添加约束的方法,它是NSLayoutConstraint的类方法:
@param view1 传入想要添加约束的控件
@param attr1 传入想要添加约束的方向,这个枚举值有很多,可以自己看看
@param relation 传入与约束值的关系,大于,等于还是小于
@param view2 传入被参照对象
@param attr2 传入被参照对象所被参照的方向,如顶部,左边,右边等等
@param multiplier 传入想要的间距倍数关系
@param c 传入最终的差值
@return NSLayoutConstraint对象
+(instancetype)constraintWithItem:(id)view1attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relationtoItem:(id)view2 attribute:(NSLayoutAttribute)attr2multiplier:(CGFloat)multiplier constant:(CGFloat)c
使用代码添加一个视图的约束要添加到这个视图的父视图中;如果有多个约束相互冲突,解决冲突的办法或者删除其他的约束,保留一个;或者可以通过设置约束的优先级,在约束相互冲突时,优先执行某个约束,忽略其他冲突的约束;