布局方式

绝对布局:frame

相对布局:

1、Autoresizing(启用的方式,局限性大)

2、Auto layout(强制主线程布局,低性能,当view个数大于30时会明显降低性能,简单页面可以使用)

在我们使用 Auto Layout 进行布局时,可以指定一系列的约束,比如视图的高度、宽度是多少等等。而每一个约束其实都是一个简单的线性等式或不等式,整个界面上的所有约束在一起就 明确地(没有冲突) 定义了整个系统的布局。

Auto Layout 的原理就是对 线性方程组或者不等式 的求解。

代码方式:

利用NSLayoutConstraint类创建具体的约束对象

添加约束对象到相应的view上

- (void)addConstraint:(NSLayoutConstraint *)constraint;

- (void)addConstraints:(NSArray *)constraints;

代码实现Autolayout的注意点:

1)要先禁止autoresizing功能,设置view的下面属性为NO

2)view.translatesAutoresizingMaskIntoConstraints = NO;

3)添加约束之前,一定要保证相关控件都已经在各自的父控件上

4)不用再给view设置frame

5)一个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

tips:简单的添加动画:

[UIView animateWithDuration:1 delay:0.5 usingSpringWithDamping:0.5 initialSpringVelocity:15 options:UIViewAnimationOptionCurveEaseOut animations:^{ [self.view layoutIfNeeded]; } completion:nil];

3、VFL(全称是Visual Format Language,翻译过来是“可视化格式语言”)

VFL是苹果公司为了简化Autolayout的编码而推出的抽象语言

4、第三方自动布局框架

1、masonry(对autolayout的封装)

github地址

其他大神的实用教程传送门

2、

你可能感兴趣的:(布局方式)