IOS Autolayout

 Autolayout是一种自动布局技术,专门用来布局UI界面的

 ●  AutolayoutiOS 6开始引入,因为Xcode 4的不给力,当时并无获得很大推 广布局

●  iOS 7(Xcode 5)开始,Autolayout的开发效率获得很大的提高spa

●  苹果官方也推荐开发者尽可能使用Autolayout来布局UI界面code

●  Autolayout能很轻松地解决屏幕适配的问题 对象

 

Autoresizing
Autolayout以前,有Autoresizing能够做屏幕适配,但局限性较大,有些任务
根本没法完成
相比之下,Autolayout的功能比Autoresizing强大不少

 

 

Autolayout2个核心概念ip

参照
约束
ci

 

 

 

**警告 开发

控件的frame不匹配所添加的约束, 好比 好比约束控件的宽度为100, 而控件如今的宽度是110 it

**错误 io

缺少必要的约束, 好比 class

    只约束了宽度和高度, 没有约束具体的位置

两个约束冲突, 好比
    1个约束控件的宽度为100, 1个约束控件的宽度为110

 

 

 

代码实现Autolayout

代码实现Autolayout的步骤
利用NSLayoutConstraint类建立具体的约束对象
添加约束对象到相应的view
- (void)addConstraint:(NSLayoutConstraint *)constraint; - (void)addConstraints:(NSArray *)constraints;

 

代码实现Autolayout的注意点
要先禁止autoresizing功能,设置view的下面属性为NO

view.translatesAutoresizingMaskIntoConstraints = NO; 添加约束以前,必定要保证相关控件都已经在各自的父控件上
不用再给view设置frame

 

 

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

 

 

 

在建立约束以后,须要将其添加到做用的view
在添加时要注意目标view须要遵循如下规则:
添加约束的规则1:
对于两个同层级view之间的约束关系,添加到它们的 父view
添加约束的规则2:
对于两个不一样级view之间的约束关系,添加到他们最近的共同的 父view
 
添加约束的规则3
对于有层次关系的两个view之间的约束关系,添加到层次较高的 父view
相关文章
相关标签/搜索