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要响应屏幕旋转事件,通过找父控制器,一层层往上找,最终要能找到窗口才行.

      

  • 相关阅读:
    Android Studio 单刷《第一行代码》系列 05 —— Fragment 基础
    Android Studio 单刷《第一行代码》系列 04 —— Activity 相关
    Android Studio 单刷《第一行代码》系列 03 —— Activity 基础
    Android Studio 单刷《第一行代码》系列 02 —— 日志工具 LogCat
    Android Studio 单刷《第一行代码》系列 01 —— 第一战 HelloWorld
    IDEA 内网手动添加oracle,mysql等数据源,以及server returns invalid timezone错误配置
    eclipse maven设置
    IntelliJ IDE 常用配置
    eclipse maven 常见问题解决方案
    Maven 安装和配置
  • 原文地址:https://www.cnblogs.com/oumygade/p/4319133.html
Copyright © 2011-2022 走看看