• 对于适配一些简单看法


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

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

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

      

  • 相关阅读:
    VisionPro 极坐标圆形物体缺陷检测
    VisionPro CogSobeEdgeTool工具
    VisionPro CogLinescanDistortionCorrectionTool工具 图像处理工具
    VisionPro CogIPTwoImageSubtractTool工具 图像处理工具
    云原生技术实践-关键要素和原则
    深度解析项目管理
    商业进化图谱
    一张图理解网络的几个专有名词:数据、段、包、帧、比特
    泛在感知中台建设方案
    区块链生态架构图
  • 原文地址:https://www.cnblogs.com/iOStingting/p/4943483.html
Copyright © 2020-2023  润新知