适配方案
-
手码适配
手码写控件的时候用此方法适配
根据当前屏幕宽高,其他控件坐标及宽高等进行适配
//获取屏幕的宽高
#define ScreenWidth [UIScreen mainScreen].bounds.size.width
#define ScreenHeight [UIScreen mainScreen].bounds.size.height
示例:
labelOne根据当前屏幕宽高适配
labelTwo根据labelOne坐标及宽高进行适配
UILabel *labelOne = [[UILabel alloc] initWithFrame:CGRectMake(ScreenWidth/2 - 20, 20, 40, 40)];
labelOne.backgroundColor = [UIColor yellowColor];
[self.view addSubview:labelOne];
UILabel *labelTwo = [[UILabel alloc] initWithFrame:CGRectMake(labelOne.frame.origin.x, labelOne.frame.origin.y + labelOne.frame.size.height + 10, labelOne.frame.size.width, labelOne.frame.size.height)];
labelTwo.backgroundColor = [UIColor greenColor];
[self.view addSubview:labelTwo];
效果图:
78AA851F-9710-447C-9A52-C6446788DD40.png-
AutoResizing
AutoLayout之前的适配方法,现在不常用了
在view的autoresizesSubviews属性为YES时(默认为YES), AutoResizing才会生效
因为从Xcode6开始,storyboard&xib默认是自动布局,所以需要手动调整,才能使用AutoResizing,按下图所示,将AutoLayout和SizeClasses取消勾选
示例:
在view上添加textField,根据屏幕宽度自动伸缩,左右距离屏幕均为20
1-根据当前view的尺寸(宽375,高667),将textField添加在正确位置
2-方框内的横竖为textField的宽高是否缩放,方框外的上下左右为距离父视图的距离
DEDB62C4-0815-4FE3-86E3-EB03F644D657.png效果图:
A2C5379E-746E-4B2A-AA14-ED3F2F7D1CC6.png如果只设置了上边距和右边距,则运行结果为:
C89268DA-2BC5-4027-9DBE-9FA1B5B1FA30.png- AutoLayout
直接约束
简单易用,最爱!只需要给每一个控件设置好唯一位置即可!
下图暗色部分,为设置两个控件坐标时使用
下图最下面两行,为屏幕宽高居中
下图为设置某一控件上下左右距离及自身宽高
8876192B-963C-4126-916B-9F37A40335D4.png注意:此两种配合使用时,很可能出现设置重复,在下图中查看,将重复的删除即可(点中某一行,直接delete)
D16E789F-88AF-40A9-9E73-47C5DD2D614E.png快捷键:
command+option+"=" 将控件移动到适配后的位置
VFL语言约束
仅了解一点,没怎么用过
UIButton *button=[[UIButton alloc]init];
[button setTitle:@"VFL约束" forState:UIControlStateNormal];
button.translatesAutoresizingMaskIntoConstraints=NO;
[button setBackgroundColor:[UIColor blackColor]];
[self.view addSubview:button];
NSArray *constraints1=[NSLayoutConstraint
constraintsWithVisualFormat:@"H:|-[button]-|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(button)];
NSArray *constraints2=[NSLayoutConstraint
constraintsWithVisualFormat:@"V:|-20-[button(==30)]"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(button)];
[self.view addConstraints:constraints1];
[self.view addConstraints:constraints2];
效果图:
6C6CA8CD-53F7-4117-8C1C-3D930A4F858F.png-** SizeClasses**
iOS8之后新增的特性,将屏幕分成不同的抽象概念,具体还未使用过
网友评论