• 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. java去任意范围的随机数

    一.java.uitl.Randomrandom.nextInt(20),任意取[0,20)之间整数,其中0可以取到,20取不到 二.取某个范围的任意数public static String get ...

  2. MD04

    MD04执行MRP分析后, 将计划订单转换为采购申请单后,,如图所示 采购申请转为采购订单后,如图所示 采购订单生成后,MMBE查看库存 MIGO进行收货后,如下图 此物料在SO中已经收货,已有库存

  3. Uncommon Words from Two Sentences

    https://leetcode.com/problems/uncommon-words-from-two-sentences We are given two sentences A and B.  ...

  4. 一个基于Tp3.2(thinkphp3.2)的工会管理系统

    该系统包括11个模块. 会员管理模块 奖惩管理模块 运动会管理模块 新闻管理模块 文档管理模块 经费管理模块 电子提案管理模块 用户管理模块 权限管理模块 系统管理模块 系统的登录 系统主页 这里只是 ...

  5. 小程序与Spring项目数据交互

    上一篇博客刚说了利用Postman来测试Spring Boot项目,测试通过后就可以和小程序进行交互了. 首先要在微信开发者工具里面,点击"详情",勾选上"不校验合法域名 ...

  6. org.apache.commons.httpclient和org.apache.http.client区别(转)

    官网说明: http://hc.apache.org/httpclient-3.x/ Commons HttpClient项目现已结束,不再开发.它已被其HttpClient和HttpCore模块中的 ...

  7. cogs 2691. Sumdiv

    2691. Sumdiv ★★★   输入文件:sumdiv.in   输出文件:sumdiv.out   简单对比时间限制:1 s   内存限制:12 MB [题目描述] 考虑两个自然数A和B.定义 ...

  8. GFS安装

    GlusterFS 搭建 1.环境要求 IP地址 主机名称 系统 172.16.2.201 test01 Centos 6.4 172.16.2.202 test02 Centos 6.4 172.1 ...

  9. CF 700E

    构建后缀自动机,求出后缀树 比较明显的dp 设 \(f[i]\) 表示从上而下到达当前点能够满足条件的最优值 只需要检查父亲节点是否在当前串中出现过两次就行了 这个判断用 \(endpos\) 来判断 ...

  10. 浅谈最近公共祖先(LCA)

    LCA(Least Common Ancestors),即最近公共祖先,是指在有根树中,找出某两个结点u和v最近的公共祖先. (来自百度百科) 一.倍增求LCA 预处理出距点u距离为2^0,2^1,2 ...