苹果常用的布局方式

知识点:

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

使用代码添加一个视图的约束要添加到这个视图的父视图中;如果有多个约束相互冲突,解决冲突的办法或者删除其他的约束,保留一个;或者可以通过设置约束的优先级,在约束相互冲突时,优先执行某个约束,忽略其他冲突的约束;

你可能感兴趣的:(苹果常用的布局方式)