• iPad开发最大的不同在于iPhone的就是屏幕控件的适配,以及横竖屏的旋转。
  • Storyboard中得SizeClass的横竖屏配置,也不支持iPad开发。

1.在控制器中得到设备的旋转方向

在 iOS8及以后,屏幕就只有旋转后屏幕尺寸之分,不再是过期的旋转方向。

  • 在iOS7及以前得到屏幕旋转方向的方法
/**
// UIInterfaceOrientation ,屏幕方向
UIInterfaceOrientationUnknown = UIDeviceOrientationUnknown,
UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait,
UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight,
UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft
*/
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
// 即将旋转执行动画
NSLog(@"%s", __func__);
} - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
// 即将旋转
NSLog(@"%s", __func__);
}
  • 在iOS8以后,屏幕就只有屏幕之分,即当屏幕的宽大于高就是横屏,否则是竖屏。

    • iPad屏幕只有 (1024 * 768)横屏
    • (768 * 1024)竖屏
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
// 1.判断是否是横屏
BOOL isLandscape = size.width == 1024; // 2.设置Dock的宽度和高度
// 获取屏幕旋转动画执行的时间
CGFloat duration = [coordinator transitionDuration];
[UIView animateWithDuration:duration animations:^{ }];
}

2.iPad中Modal弹出控制器的方式和样式

Modal常见有4种呈现样式

控制器属性 modalPresentationStyle
  • UIModalPresentationFullScreen :全屏显示(默认)
  • UIModalPresentationPageSheet

    • 宽度:竖屏时的宽度(768)
    • 高度:当前屏幕的高度(填充整个高度)
        • UIModalPresentationCurrentContext :跟随父控制器的呈现样式

        Modal一共4种过渡样式

        控制器属性 modalTransitionStyle
        • UIModalTransitionStyleCoverVertical :从底部往上钻(默认)
        • UIModalTransitionStyleFlipHorizontal :三维翻转
        • UIModalTransitionStyleCrossDissolve :淡入淡出
        • UIModalTransitionStylePartialCurl :翻页(只显示部分,使用前提:呈现样式必须是UIModalPresentationFullScreen)
        • UIModalPresentationCustom
        • UIModalPresentationOverFullScreen
        • UIModalPresentationOverCurrentContext
        • UIModalPresentationPopover //iOS8之后过渡样式pop样式
        • UIModalPresentationNone

        3. iPad特有的UIPopoverController的使用

        案例:

      • 情景① 在导航栏上添加leftBarButtonItem按钮,然后弹出UIPopoverController

        • 创建UIPopoverController控制器的内容控制器添加到UIPopoverController上
        1>设置内容控制器(并需先创建内容控制器)
        • 强调UIPopoverController不是继承UIViewController,也就不具备显示功能,要设置内容,使用initWithContentViewController设置内容
        - (id)initWithContentViewController:(UIViewController *)viewController;
        
        - (void)setContentViewController:(UIViewController *)viewController animated:(BOOL)animated;
        
        @property (nonatomic, retain) UIViewController *contentViewController;
        2>设置尺寸
        • 设置popView的大小(默认控制器有多大就显示多大)(120, 44 * 3)

          • UIPopoverController的方法popoverContentSize
          • 内容控制器中设置的方法

            • self.preferredContentSize
            • self.contentSizeForViewInPopover /ios7过时/
        3>设置在什么地方显示
        • 调用方法
        /**
        * 弹出UIPopoverController的方法(一)
        *
        * @param item 围绕着哪个UIBarButtonItem显示
        * @param arrowDirections 箭头的方向
        * @param animated 是否通过动画显示出来
        */
        - (void)presentPopoverFromBarButtonItem:(UIBarButtonItem *)item permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated;

        情景② 在导航控制器的View上添加个按钮,点击,弹出一个UIPopoverController控制器,然后这个控制器再用导航控制器包装,显示二级控制器

        • 1>调用方法
        /**
        * 弹出UIPopoverController
        *
        * @param rect 指定箭头所指区域的矩形框范围(位置和尺寸)
        * @param view rect参数是以view的左上角为坐标原点(0,0)
        * @param arrowDirections 箭头的方向
        * @param animated 是否通过动画显示出来
        */
        - (void)presentPopoverFromRect:(CGRect)rect inView:(UIView *)view permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated;
        • 2>控制器内,有自己的逻辑结构(和正常控制器一样可以跳转返回等)

        UIPopoverController消失,

        • 方法

          [Popover dismissPopoverAnimated:YES]

        4.iPad特有的UISplitViewController的使用

        a.masterViewController

        • 1>masterViewController(主要控制器)
        • 2>负责展示主要的菜单内容

        b.detailViewController

        • 1>detailViewController(详情控制器)
        • 2>负责展示详细内容

iPad开发简单介绍的更多相关文章

  1. iOS-iOS开发简单介绍

    概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序.但是这里我想强调一下,前面的 ...

  2. iOS开发简单介绍

    概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的iOS程序.但是这里我想强调一下,前面的 ...

  3. Windowsclient开发简单介绍(四)

            在上一篇文章里,我简单扼要的给大家介绍了一下GDI的基础知识,包含DC,HDC.GDI对象等等,总的来说都是些偏理论的知识,属于概念的范畴. 今天这篇文章里,我就要正式開始有点实际的东 ...

  4. 在线支付接口之PHP支付宝接口开发简单介绍

    php100:92:在线支付接口之PHP支付宝接口开发 支付接口一般是第三方提供的代收款.付款的平台,可以通过支付接口帮助企业或个人利用一切可以使用的支付方式.常见支付平台:支付宝.快钱.云网支付.财 ...

  5. Flask web开发 简单介绍

    Flask是一个基于python的轻量级web框架.当安装好后Flask后 (pip install flask),就可以开始使用了. 一.最简单的例子 1.新建目录,作为web应用的目录,如: mk ...

  6. iOS开发UI篇—popoverController简单介绍(ipad)

    一.简单介绍 1.什么是UIPopoverController 是iPad开发中常见的一种控制器(在iPhone上不允许使用) 跟其他控制器不一样的是,它直接继承自NSObject,并非继承自UIVi ...

  7. iOS开发UI篇—popoverController简单介绍

    iOS开发UI篇—popoverController简单介绍 一.简单介绍 1.什么是UIPopoverController 是iPad开发中常见的一种控制器(在iPhone上不允许使用) 跟其他控制 ...

  8. iOS开发UI篇—iPad开发中得modal介绍

    iOS开发UI篇—iPad开发中得modal介绍 一.简单介绍 说明1: 在iPhone开发中,Modal是一种常见的切换控制器的方式 默认是从屏幕底部往上弹出,直到完全盖住后面的内容为止 说明2: ...

  9. iOS开发多线程篇—多线程简单介绍

    iOS开发多线程篇—多线程简单介绍 一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcod ...

随机推荐

  1. win 10 无线标志都不出现

    http://jingyan.baidu.com/article/e75057f2fdd2f1ebc91a89f1.html ipconfig /flushdns netsh winsock rese ...

  2. git base cli

  3. JavaScript高级程序设计学习笔记第一章

    作为学习javascript的小白,为了督促自己读书,写下自己在读书时的提炼的关键点. 第一章: 1.JavaScript简史:Netscape Navigator中的JavaScript与Inter ...

  4. [poj3140]Contestants Division树形dp

    题意:切掉树上的某条边,使分开的两棵树上各点的权值和差值最小. 与hdu2196不同的是,此题是点权,其他无太大差别,注意数据范围. 先求出每个节点的子树权值和,然后自底向上dp即可.取$\min ( ...

  5. 3dmax导出缩放

    参考 http://blog.dou.li/unity3d-import-3dmax-model-scale.html http://blog.csdn.net/pdw_jsp/article/det ...

  6. Java IO 输入和输出流

    数据流是指一组有顺序的,有起点和终点的字节集合. 最初的版本中,java.io 包中的流只有普通的字节流,即以 byte 为基本处理单位的流.字节流用来读写 8 位的数据,由于不会对数据做任何转换,因 ...

  7. SpringBoot2.0 基础案例(12):基于转账案例,演示事务管理操作

    本文源码 GitHub地址:知了一笑 https://github.com/cicadasmile/spring-boot-base 一.事务管理简介 1.事务基本概念 一组业务操作ABCD,要么全部 ...

  8. Laravel Model 利用 Macroable 为数据模型添加宏能力

    什么是ThinkSNS ? ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新版本为ThinkSNS+(简称TS+).Thin ...

  9. 【NOI2012】迷失游乐园

    题目链接:迷失游乐园(BZOJ)  迷失游乐园(Luogu) 独立完成的题,写一发题解纪念一波~ 模拟完样例大概可以知道是道树形DP了. 观察数据范围,发现是基环树,至少会有一个环. 先从树的部分开始 ...

  10. 条件分页 分页条件和页参数传递方式一 超链接拼串 方式二 使用查询表单searchForm

    <%-- Created by IntelliJ IDEA. User: jie Date: 2019/5/10 Time: 20:00 To change this template use ...