ios开发学习系列ios自己尝试等装一下

【iOS】屏幕适配

2016-07-07  本文已影响1056人  亲爱的大倩倩

适配方案

//获取屏幕的宽高
#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 BD1741E0-311A-421C-A9F7-A08313C8B750.png

示例:
在view上添加textField,根据屏幕宽度自动伸缩,左右距离屏幕均为20
1-根据当前view的尺寸(宽375,高667),将textField添加在正确位置

7F0B21A8-598B-494A-987F-88542920D826.png

2-方框内的横竖为textField的宽高是否缩放,方框外的上下左右为距离父视图的距离

DEDB62C4-0815-4FE3-86E3-EB03F644D657.png

效果图:

A2C5379E-746E-4B2A-AA14-ED3F2F7D1CC6.png

如果只设置了上边距和右边距,则运行结果为:

C89268DA-2BC5-4027-9DBE-9FA1B5B1FA30.png
直接约束

简单易用,最爱!只需要给每一个控件设置好唯一位置即可!
下图暗色部分,为设置两个控件坐标时使用
下图最下面两行,为屏幕宽高居中

384916D6-D79D-40DB-B8AB-145030CB809E.png

下图为设置某一控件上下左右距离及自身宽高

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之后新增的特性,将屏幕分成不同的抽象概念,具体还未使用过

上一篇下一篇

猜你喜欢

热点阅读