美文网首页
屏幕适配

屏幕适配

作者: AlanGe | 来源:发表于2017-08-27 04:14 被阅读17次

    1.你有做过iPhone的屏幕适配吗?在项目中你是如何进行适配的?

    2.你是如何实现多屏幕适配的

    一、iOS屏幕适配发展历程
        设备
        适配技术
        4及以前(iPad未出)
        直接用代码计算
        有了iPad
        autoResizing
        有不同屏幕的iPhone后
        autoLayout
        有更多不同屏幕的iPhone后
        sizeClass
    
    二、各个技术的特性
        1、autoLayout
        帮我们确定在不同设备、不同(父view)环境下,同一个可视单元所应具有合适的位置和尺寸(任何两个视图的关系都可以确定)。
        1.1 autoLayout的用法:
            1.1.1、直接建立约束条件
                •[self.viewaddConstraint: [NSLayoutConstraintconstraintWithItem:blueView attribute:NSLayoutAttributeLeftrelatedBy:NSLayoutRelationEqual toItem:redView attribute:NSLayoutAttributeLeftmultiplier:1 constant:0]];
                这样虽然代码量比较大,但是是绝对可行的办法,也是使用autoLayout最根本的办法之一。
    
            1.1.2、使用VFL语言
                - (void)viewDidLoad {
                    [super viewDidLoad];
                    UIButton *button=[[UIButtonalloc]init];
                    [button setTitle:@"点击一下"forState:UIControlStateNormal];
                    button.translatesAutoresizingMaskIntoConstraints=NO;
                    [button setBackgroundColor:[UIColorblackColor]];
                    [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:0metrics:nil views:NSDictionaryOfVariableBindings(button)];
                    [self.viewaddConstraints:constraints1];
                    [self.viewaddConstraints:constraints2];
                }
    
            1.1.3使用使用第三方库,如:Masonry、UIView+AutoLayout……
    
        1.2、autoLayout的好处:
            1)你基本上可以不用考虑3.5寸和4寸以及即将上市的x.x寸屏幕不同分辨率的问题,你终于可以不用在viewDidLoad方法里判断不同分辨率下,不同控件应该放在哪里,或者针对不同分辨率写不同的storyboard和xib;
            2)你可以抛弃那些根据不同文字来计算tableViewCell、UILabel高度的代码了,因为autolayout会帮你自动计算好;
            3)如果你的布局在横屏竖屏下变化不是特别大,你不用再为横着竖着写两套代码或者写两个storyboard/xib了;
    
        2.sizeClass
            在iOS8中,新增了Size Classes特性,它是对当前所有iOS设备尺寸的一个抽象。那我们就只把屏幕的宽和高分别分成三种情况:Compact:紧凑、Regular:宽松、Any:任意。
            这样宽和高三三一整合,一共9中情况。如下图所示,针对每一种情况。我们可以在每种情况下设置不同的布局(包括控件的约束,甚至是控件是否显示)
            sizeClass.png
            对sizeClass的理解:sizeClass的实质是将iOS屏幕分成了不同的抽象概念,这些不同的抽象组合,对应着不同的设备屏幕。所以,利用sizeClass可以针对同一套UI,来适配所有的屏幕。注意:这些所有的适配,都是利用autoLayout来实现的,sizeClass只是负责提供不同的屏幕尺寸。
    

    相关文章

      网友评论

          本文标题:屏幕适配

          本文链接:https://www.haomeiwen.com/subject/atcbdxtx.html