zoukankan      html  css  js  c++  java
  • 屏幕适配-使用autoLayout

    当遇见xib中无法删除的控件时. 将这个错误的控件拖离本xib(第一个元素.xib文件是有许多元素组成的集合),确保这个xib是正确的.重新创建一个xib文件,将这个正确的xib元素整个复制过去. 在finder 删除旧文件.

    实例一.粉色view 参照橙色view: 等宽等高,左对齐,间距10.

          

      1>按住control,从粉色view拖线到橙色view 松手  

      2>按住shift键勾选下图四个位置,然后点击Add Constraints 

           

      3>如果没有红线,表示没有冲突. 'command' + 'option' + '=' 三键同时按下更新约束

      4>修改间距:选中粉色view->属性->Top Space to: Edit->改成10

          

          

    实例二:

          

      1>先约束好蓝色view

      2>约束一个等宽等高的红色view

          

      3>选中红色view->属性->Equal Width to: Edit->Multiplier改成0.5

          

    实例三:四个控件,等宽等高,间距都是10,bottom=10;

          

    实例四:将屏幕四等分.

      先设置红色view的pin  上 左为0. 在参照self.view的等宽等高. 然后属性->Equal Width to: Edit->Multiplier改成0.5

      在设置另外三个

          

    1.屏幕适配:

    iOS 7、iOS 8屏幕适配

    在iOS 8中屏幕的frame是根据设备真实方向来返回frame的,而在iOS 7中,不过是横屏还是竖屏,iOS总是返回竖屏的frame

    这就对某些支持横屏的App造成了困扰,其实也只需要加两个宏或者

    #define SCREEN_WIDTH        (getScreenSize().width)
    #define SCREEN_HEIGHT       (getScreenSize().height)
       
     CGSize getScreenSize() {
            CGSize screenSize = [UIScreen mainScreen].bounds.size;
            if ((NSFoundationVersionNumber <= NSFoundationVersionNumber_iOS_7_1) &&
                UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) {
                return CGSizeMake(screenSize.height, screenSize.width);
            }
            return screenSize;  
     }

    contentInset 不属于屏幕适配的内容,但是我还是放在屏幕适配里说一下。iOS8 和 iOS7 对 automaticallyAdjustsScrollViewInsets 属性的解释不一样:

    • iOS8 会把该属性的影响作用到 controller 的 view 的 subviews 上
    • iOS7 仅会作用到 self.view 上

    另外当你还需要手动调用 contentInset 的时候,iOS7 似乎就不会自动调整了。解决办法就是将 automaticallyAdjustsScrollViewInsets 设置为 NO,然后自己控制 contentInset

    2.修正偏移量

    //修正偏移量
    - (void)setupNavigationOffset{
        if ( self.navigationController.navigationBarHidden == YES ){
            [self.view setBounds:CGRectMake(0, -20, self.view.bounds.size.width, self.view.bounds.size.height)];
        }
        else{
            self.edgesForExtendedLayout = UIRectEdgeNone;
        }
    }

  • 相关阅读:
    【重点】2020年宝山区义务教育阶段学校校区范围与招生计划(初中)
    转: 彻底理解 Spring 容器和应用上下文
    转《深入理解 Java 内存模型》读书笔记
    Mysql Update 流程摘抄
    统一支付接口设计
    支付系统 简版设计
    订单1:n支付单 设计讨论
    RocketMQ 使用情况梳理
    转 Java jar (SpringBoot Jar)转为win可执行的exe程序
    Git flow 工作流与规范
  • 原文地址:https://www.cnblogs.com/jiayongqiang/p/5501994.html
Copyright © 2011-2022 走看看