iOS屏幕的适配

2016-11-07  本文已影响0人  面包与世界

AutoLayout

AutoLayout是一种基于约束的,描述性的布局系统。

使用约束条件来描述布局,view的frame会依据这些约束来进行计算 ,一举解决了不同分辨率和屏幕尺寸下view的适配问题。

AutoLayout的特点
AutoLayout的使用

通过代码实现autolayout方法非常麻烦,因此通过拖拽创建相对方便快捷,但是在做一些支付信息,密码保护等功能的时候,尽量使用代码进行创建。
代码例子:
1.创建一个view

UIView*blueView=[[UIView alloc]init];
blueView.backgroundColor=[UIColor  blueColor];
[self.view addSubview:blueView];

2.因为AutoLayout和Autoresizing不能重用,因此需要去掉autoresizing,所以可能添加约束的控件

 self.view.translatesAutoresizingMaskIntoConstraints=NO;
 blueView.translatesAutoresizingMaskIntoConstraints=NO;

3.给控件的属性赋值 ,并添加在对应视图上

//设置left
NSLayoutConstraint *leftBlue=[NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0 constant:20];
 //设置right
NSLayoutConstraint *rightBlue=[NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1.0 constant:-20];
//设置top
NSLayoutConstraint *topBlue=[NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0 constant:30];
//设置height
NSLayoutConstraint *heighBlue=[NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:0 constant:30];
//添加到对应参照控件上
[self.view addConstraints:@[leftBlue,rightBlue,topBlue]];
[blueView addConstraint:heightBlue];

4.通过sizeClass进行适配

因为autolayout不能满足设置一套约束,在所有的屏幕都适配,所以出现了sizeClass,size用来区分屏幕

sizeclass中把宽高各分成了三种类型regualr,compact,any,当宽度和高度各是某种类型的时候,就会确定某一类屏幕,当宽高均为any的时候,即可适配所有屏幕。 所以确定九类屏幕,只是不屏幕进行了区分,具体的约束关系,但是具体的实现 还需要autolayout来实现。

上一篇 下一篇

猜你喜欢

热点阅读