zoukankan      html  css  js  c++  java
  • 对于适配一些简单看法

    在一开始编写项目时,并没有想象项目在各个设备上的显示效果,只是略微一个百分比的设置,以简单的适配设备。

    在项目开始的时候,考虑到各种设备的不同显示效果,从而在适配上又重新做了一个调整。主要是采用两种方式来适配:

    1.NSLayoutConstraint

    这是苹果自带的一种适配技术,我们可以简单的让控件适配。比如说一个控件距离左边10,距离右边10,距离上面10,距离下面10,这样就能让控件在不同尺寸的设备上显示出比较好的效果:

      self.container.translatesAutoresizingMaskIntoConstraints = NO;

      NSLayoutConstraint *containerLeftConstraint = [NSLayoutConstraint constraintWithItem:self.container attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeLeading multiplier:1.0 constant:10];

     

      NSLayoutConstraint *containerTopConstraint = [NSLayoutConstraint constraintWithItem:self.container attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeTop multiplier:1.0 constant:150];

        

      NSLayoutConstraint *containerBottomConstraint = [NSLayoutConstraint constraintWithItem:self.container attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeBottom multiplier:1.0 constant:-150];

     

      NSLayoutConstraint *containerRightConstraint = [NSLayoutConstraint constraintWithItem:self.container attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeTrailing multiplier:1.0 constant:-10];

        

        //iOS 6.0或者7.0调用addConstraints

        //    [self.view addConstraints:@[leftConstraint, rightConstraint, topConstraint, heightConstraint]];

        

        //iOS 8.0以后设置active属性值

        containerLeftConstraint.active = YES;

        containerRightConstraint.active = YES;

        containerTopConstraint.active = YES;

        containerBottomConstraint.active = YES;

     

      NSLayoutAttributeLeading是距离左边,NSLayoutAttributeTrailing是距离右边,NSLayoutAttributeTop是距离上面,NSLayoutAttributeBottom是距离下面。

    但是这样的适配在获取frame时是失败的,因为它是在获取设备宽高之后才给其设置frame,也就是动态的给与frame的,在代码的ViewDidLayoutSubViews中可以获取到它的frame。

     

    2.直接利用frame进行适配

      利用frame进行适配时,是以百分比为标准的,比如说10个控件分两排,1排显示5个,就可以得到它的宽度以及X值(WIDTH / 5)* i

     

     

    最后在使用NSLayoutConstraint进行适配时,首先要将控件的translatesAutoresizingMaskIntoConstraints = NO,否则AutoresizingMask与NSLayoutConstraint发生冲突,而让适配失效。

      

  • 相关阅读:
    xutils3批量上传文件
    超详细Android面试的准备与经历分享 | 百度(offer)
    [网站公告]3月10日23:00-4:00阿里云SLB升级,会有4-8次连接闪断团队
    上周热点回顾(3.2-3.8)团队
    发布新博客皮肤red_autumnal_leaves团队
    上周热点回顾(2.23-3.1)团队
    上周热点回顾(2.16-2.22)团队
    上周热点回顾(2.2-2.8)团队
    如何禁止IE自动生成链接团队
    [云上天气预报-有时有闪电]2月3日23:00-4:00阿里云SLB升级期间网络会闪断团队
  • 原文地址:https://www.cnblogs.com/iOStingting/p/4943483.html
Copyright © 2011-2022 走看看