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

  

时间: 2024-12-03 04:50:21

iOS iPad开发之横竖屏适配的相关文章

(一〇八)iPad开发之横竖屏适配

在iPad开发中,横竖屏的视图常常是不同的,例如侧边栏Dock,在横屏时用于屏幕较宽,可以展示足够多的内容,每个按钮都可以展示出标题:而竖屏时Dock应该比较窄,只显示图标不现实按钮标题. iPad比较重要的知识是不同类型设备的宽高在以点为单位的图形坐标系下固定为768x1024,因此常常利用此值来判断横竖屏. 768.1024.横竖屏判断很常用,可以定义一个公共的常量文件来放这些内容. [常量和宏的定义] ①在.m文件中,定义变量,加上const,注意指针(例如NSString*)使用的是常量

【IOS界面布局】横竖屏切换和控件自适应(推荐)

[IOS界面布局]横竖屏切换和控件自适应(推荐) 分类: [MAC/IOS下开发]2013-11-06 15:14 8798人阅读 评论(0) 收藏 举报 横竖屏切换 自适应 第一种:通过人为的办法改变view.transform的属性. 具体办法: view.transform一般是View的旋转,拉伸移动等属性,类似view.layer.transform,区别在于 View.transform是二维的,也就是使用仿射的办法通常就是带有前缀CGAffineTransform的类(可以到API

移动视频开发中横竖屏转换遇到的BUG(Android)

剧情铺垫:首先申明,我是一个Android初学者.最开始我们想做一个视频通话软件,很快就找到了AnyChat.但当时用的是官网的demo,只支持横屏.我们想做成横竖屏都支持的效果. 遇到的问题 1.自己的视频会被对方的视频挡住 2.自己的视频横竖比例不对 3.自己的视频将音量条挡住 4.自己的视频不能居中 问题1的处理 尝试1:由于较熟悉web方面的知识,最先想到用z-index控制View的叠放,结果悲剧的没找到z-index类似物 尝试2:Android中,xml排在后的会覆盖排在前的,但这

cocos2d-x游戏开发屏幕横竖屏切换

android解决方案: 1.在游戏的主activity中编写一个静态方法(继承Cocos2dxActivity) public static void changedActivityOrientation(int orientation){ switch(orientation) { case 1://横屏 instance.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); break; case 2://竖

ios开发强制横竖屏转换

第一种:手动的设置界面元素的旋转,包括状态栏.导航栏和视图.以下代码为从竖屏设置为横屏,坐标系是以竖屏的为基准,所以会出现负数的坐标值. //设置状态栏旋转 [[UIApplication sharedApplication] setStatusBarOrientation:UIDeviceOrientationLandscapeRightanimated:YES]; CGFloat duration = [UIApplication sharedApplication].statusBarOr

48 (OC) 适配iPad和iPhone、以及横竖屏适配。

一:核心方法 1.三个方法 1.1:开始就会触发 - (void)viewWillLayoutSubviews; 1.2:开始就会触发 - (void)viewDidLayoutSubviews; 1.3:设备旋转的时候会触发.在UIScreen的bounds和size(下面方法中的参数).按照size为主. - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id <UIViewControllerT

ios某个控制器强制横竖屏

在控制器的 .m 中实现 -(NSUInteger)supportedInterfaceOrientations{ return UIInterfaceOrientationMaskPortrait;       //(竖屏) } UIInterfaceOrientationMaskLandscape  //(横屏)

猫猫学iOS之ipad开发qq空间项目横竖屏幕适配

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 一:效果图 先看效果 二:结构图 如图所示: 其中用到了UIView+extension分类 Masonry第三方框架做子控制器的适配 NYHomeViewController对应主页也就是全部 NYDock是左边的菜单栏 放置各个选项卡等按钮功能区域 NYIconView头像 NYTabBar选项卡 NYToolBar最下面的功能区 NYTabBarButto

iPad纯代码实现横竖屏切换,采用相对布局

因为本来不喜欢使用StoryBoard.xib等可视化编程,一直使用的纯代码布局,但是纯代码布局的iOS开发者会遇到一个问题,就是横竖屏适配的问题,如果使用自动布局,那些约束的,写起来都是不难,但是控件之间的关联太多,以至于维护性很差.本人由于工作的原因,做iPad开发,那就必须要解决横竖屏适配的问题,于是就有了这篇文章. 代码如下: // //  ViewController.swift //  iPad横竖屏切换 // //  Created by zhangxu on 16/7/30. /