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发生冲突,而让适配失效。

      

  • 相关阅读:
    springcloud配置eureka后启动application失败原因Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name 'trace
    Parameter index out of range (1 > number of parameters, which is 0
    mysql返回某月份的第一天
    mybatisplus的自定义sql使用方法及VO的使用
    mysql截取地址为城市名
    mybatisplus多表查询及自定义查询
    mybatisplus条件构造器wrapper
    HTTP 【值得你看个究竟】
    Kafka 【入门一篇文章就够了】
    notepad++ 删除末尾换行符
  • 原文地址:https://www.cnblogs.com/iOStingting/p/4943483.html
Copyright © 2011-2022 走看看