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抽成协议,只要遵守协议,就拥有了该方法的声明,自行实现协议方法.

  优点:iOS7\8都可行

  缺点:比较繁琐

2. 补充说明

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

  

转载于:https://www.cnblogs.com/oumygade/p/4319133.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值