zoukankan      html  css  js  c++  java
  • iOS iPad开发之横竖屏适配

    1. 做横竖屏适配的时,需要判断当前状态是横屏还是竖屏,有两种方法:

      第1种:[UIScreen mainScreen].bounds.size.width == 768

        优点:把这个抽成宏之后,随时可以判断横竖屏, #define Lanscape ([UIScreen mainScreen].bounds.size.width == 768)

        缺点:只在iOS8可行,也就是说在iOS8中横屏的width=1024,竖屏的width=768; 而在iOS7上,横竖屏的width=768

      第2种: - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

        屏幕旋转时,会自动调用该方法,只需要在根控制器重写该方法

          - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

          {

                  BOOL landscape = UIInterfaceOrientationIsLandscape(toInterfaceOrientation); //判断是不是横屏

                  [子视图1 rotate:landscape];  // 子视图1的公共方法

              [子视图2 rotate:landscape];  // 子视图2的公共方法

          }

        在子视图1中,要实现- (void)rotate:(BOOL)landscape 方法

          - (void)rotate:(BOOL)landscape

          {

                if (landscape) {

                      // 横屏情况下,frame是怎样的

                } else {

                      // 竖屏情况下,frame是怎样的

                }

                // 如果子视图1里,如果也有子视图,可以这样

                [子视图1的子视图A rotate:landscape];

                [子视图1的子视图B rotate:landscape];

          }

      实际可能有很多视图都需要响应横竖屏,所以可以- (void)rotate:(BOOL)landscape抽成协议,只要遵守协议,就拥有了该方法的声明,自行实现协议方法.

      优点:iOS78都可行

      缺点:比较繁琐

    2. 补充说明

      屏幕旋转时,窗口会知道,窗口然后告诉根控制器,然后根控制器传给子控制器,子控制器又传给子控制器,所以控制器的view要响应屏幕旋转事件,通过找父控制器,一层层往上找,最终要能找到窗口才行.

      

  • 相关阅读:
    JMeter工具基础知识篇-使用命令行生成html报告
    解决jmeter请求不成功或者报403错误
    jmeter之JDBC Request各种数据库配置
    Jmeter模拟不同带宽
    SQL语句大全
    Jmeter 吞吐量控制器的使用
    如何找出系统能承受的最大在线用户数
    Jmeter之函数的应用
    jmeter如何设置IP欺骗
    华为云分布式缓存服务DCS与开源服务差异对比
  • 原文地址:https://www.cnblogs.com/oumygade/p/4319133.html
Copyright © 2011-2022 走看看