iPad编程
1. iPad
现有型号:
iPad Pro, iPad Air, iPad mini 均配备Retina显示屏。早期还有iPad
依次对应的坐标系及分辨率:
iPad Pro 坐标系:1366 x 1024 分辨率:2732 x 2048
iPad Air 坐标系:1024 x 768 分辨率:2048 x 1536
iPad mini 坐标系:1024 x 768 分辨率:2048 x 1536
开发过程中图片可只设计2048 x 1536 分辨率下的。根据实际情况,也可选择1024x1536分辨率。
2. iPad 与iPhone编程的区别
> 屏幕尺寸/分辨率不同
iPhone:640x960,640x1136……
iPad : 2048x1536
> UI元素的布局
iPad屏幕比iPhone大,可容纳显示更多的UI元素,两者的排列方式略有不同.
例如: 在iPhone中使用的UITabBarController分栏控制器,虽然在iPad下也可以使用,但一般情况下考虑到用户体验,不会使用在页面下方显示分栏菜单的方式,而是使用在左侧显示竖向的分栏菜单,实现这种效果需借助与第三方库(当然也可以自己封装)。
[扩展] 第三方库实现竖向分栏控制器 FSVerticalTabBarController
https://github.com/futuresimple/FSVerticalTabBarController
此库实现了一个类似iOS原生UITabBarController的分栏效果,只不过是竖向的。
[*扩展*] 对于iPhone下的分栏控制器,若要显示不规则尺寸的tabBarItem,则需要自定义实现,例如某个分栏的尺寸比其他的分栏都大,特别是中间的,凸出效果的。
可参考:http://code4app.com/ios/自定义不规则TabBar/51886eee6803faf053000003
> 键盘
iPad的虚拟键盘右下角多了个退出键盘的按钮
> iPad特有的类
UIPopoverController 弹出控制器
UISplitViewController 主从视图控制器[自iOS8开始,此类也可以在iPhone应用中使用]
> 部分共有API的差异
同样的类在iPhone和iPad上的显示效果会略有不同,但大部分还是一致的。
> 屏幕方向的支持
在创建工程后,在info.plist中查看会发现iPhone下支持三种方向,而iPad下支持四种方向。
> 横竖屏支持建议
一般情况下iPhone应用支持一种屏幕方向即可,竖屏 or 横屏。
iPad应用最好支持横屏,竖屏两种方向,也是官方建议。但不强制,根据实际开发业务需求选择。
> 工程运行设备选择
在创建工程时,会有Device选择有三个值:
Universal 通用 iPhone iPad的都可运行
iPhone
iPad
若选择iPhone,也仍然要考虑在iPad上运行是否正常。苹果官方其中一条审核规则:在iPhone上运行的应用必须同样也能在iPad上可运行正常。一般就选择Universal。
若应用只在iPad上运行,则选择iPad.
> 开发流程
iPhone与iPad的开发流程是一致的,在 iPhone上所学的所有知识基本都可以应用在iPad上。
3. UISplitViewController
主-从(master-detail)容器视图控制器。在此界面中,在主视图控制器上的改变会驱动从视图控制器的内容改变,这两个视图控制器是并列显示的。常应用于iPad 应用中,一般作为window的根视图控制器rootViewController。自iOS8开始,此类也可以在iPhone应用中使用
纯代码方式实现:
注意:在删除Main.storyboard文件后,需要在info.plist中将 Main storyboard file base name 项删除,否则程序崩溃报错,提示找不到Main....
> 初始化
[[UISplitViewController alloc] init]
> 设置主,从视图控制器
splitViewController.viewControllers = @[masterViewController,detailViewController];
该属性包含两个视图控制器,第一个是主视图控制器,第二个是详细/从视图控制器
> 设置显示模式
splitViewController.preferredDisplayMode
值如下:
UISplitViewControllerDisplayModeAutomatic, // 自动模式,自行根据设备尺寸决定合适的显示方式,
UISplitViewControllerDisplayModePrimaryHidden, // 主视图控制器隐藏
UISplitViewControllerDisplayModeAllVisible, // 主,从视图控制器并列显示
UISplitViewControllerDisplayModePrimaryOverlay // 主视图控制器覆盖在从视图控制器上显示
获取显示模式
splitViewController.displayMode // 注意只能获取到上述四值中的后三种
> 设置主视图控制器的显示尺寸比例
splitViewController.preferredPrimaryColumnWidthFraction // 注意此属性的值范围在0.0~1.0区间,如0.2 表示主视图控制器在splitViewController中所占的显示比例为20%。
获取主视图控制器的显示尺寸(点数)
splitViewController.primaryColumnWidth
> 显示指定的从视图控制器,一般在主视图控制器点击后触发
[splitViewController showDetailViewController: sender:]
其中参数一表示要显示的从视图控制器,参数二表示是哪个视图或视图控制器产生的此请求
> 显示指定的主视图控制器
[splitViewController showViewController: sender:]
参数一表示要显示的主视图控制器,参数二表示由哪个对象请求显示
> 设置是否将一个隐藏的视图控制器通过轻扫手势显示或隐藏
splitViewController.presentsWithGesture
注意只有在有隐藏视图控制器时有效
4. UIPopoverController
弹出控制器,以悬浮框的形式模态展现一个视图控制器的内容。
此类自iOS9被弃用,popover的效果通过视图控制器模态跳转方式实现,指定跳转的视图控制器的 modal presentation style 为 UIModalPresentationPopover, 且配合UIPopoverPresentationController的相关属性设置。
- iOS9之前popover实现:UIPopoverController的使用
> 准备弹出视图的控制器并初始化UIPopoverController
[ [UIPopoverController alloc] initWithContentViewController: ]
> 在指定的某一块特定区域弹出显示
[popoverController presentPopoverFromRect: inView: permittedArrowDirections: animated: ];
参数一: 指定的矩形框(箭头所指)范围,以参数二view的左上角为坐标原点
参数二: 参数一的坐标原点的相对view
参数三: 箭头方向: 决定了弹出视图的方向,若在指定方向上空间不够,则会导致弹出视图的尺寸无效
参数四: 是否动画显示
其中参数一,二的设置效果如下:
若在使用了导航条的视图中,要在导航条左侧或右侧按钮点击后显示popover效果,则可使用以下方法:
[popoverController presentPopoverFromBarButtonItem: permittedArrowDirections: animated: ]
> 设置背景颜色(最好设置的与弹出内容背景颜色一致,默认的是白色)
popoverController.backgroundColor
> 设置弹出内容的尺寸
[popoverController setPopoverContentSize: ];
***但一般不建议使用此方式设置弹出视图的尺寸,其尺寸应该由内容视图决定,应在弹出视图的控制器中设置 preferredContentSize 属性
- iOS9 popover实现:
> 准备弹出视图的控制器,并设置其模态弹出方式
contentVC.modalPresentationStyle = UIModalPresentationPopover; // 指定模态弹出窗的样式
[扩展补充] contentVC.modalTransitionStyle // 模态窗口显示时的动画
> 设置弹出视图控制器的弹出属性
// 箭头所指区域的坐标原点的相对视图
contentVC.popoverPresentationController.sourceView = self.view;
// 箭头所指区域尺寸
contentVC.popoverPresentationController.sourceRect = uv.frame;
// 弹出视图的背景色
contentVC.popoverPresentationController.backgroundColor = [UIColor redColor];
// 箭头方向
contentVC.popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionUp;
// 模态方式弹出视图
[self presentViewController:contentVC animated:YES completion:nil];
iPad编程的更多相关文章
- 故事板(Storyboard) 、 iPad编程 、 App和VC的生命周期
1 创建动态TableView 1.1 问题 动态表视图就是显示多少分区,多少行以及每一行的显示内容都是根据数据源来决定.之前我们学过用xib展示动态表视图,本案例将学习如何使用Storyboard展 ...
- 尝试ipad编程 以失败告终
浏览器选择: safari,iOS内置浏览器,好用,不过有些限制 iPad上的 safari可以把网页保存为pdf,比iphone上的功能强大多了 qq浏览器用来下载文件,之后文件还可以复制到文件管理 ...
- 《iPhone高级编程—使用Mono Touch和.NET/C#》
第1章 C#开发人员基于MonoTouch进行iPhone开发概述 1 1.1 产品对比 2 1.1.1 .NET Framework 2 1.1.2 Mono 2 1.1.3 MonoTouch 3 ...
- 2015最新iOS学习线路图
iOS是由苹果公司开发的移动操作系统,以xcode为主要开发工具,具有简单易用的界面.令人惊叹的功能,以及超强的稳定性,已经成为iPhone.iPad 和iPod touch 的强大基础:iOS 内置 ...
- Objective-C 是如何慢慢走红的?
对大多数人来说,Objective-C都是陌生的,原因在于它的走红过程太短.但透过Objective-C的火爆,我们就不难理解苹果程序商店的应用程序为什么轻易就突破了十万个. Objective-C的 ...
- (2018干货系列十一)最新iOS学习路线整合
怎么学iOS iOS是由苹果公司开发的移动操作系统,以xcode为主要开发工具,具有简单易用的界面.令人惊叹的功能,以及超强的稳定性,已经成为iPhone.iPad 和iPod touch 的强大基础 ...
- 简介Objective-C语言
2011-05-11 11:20 佚名 百度百科 字号:T | T Objective-C,是扩充C的面向对象编程语言.主要使用于Mac OS X和GNUstep这两个使用OpenStep标准的系统, ...
- iOS网络高级编程:iPhone和iPad的企业应用开发之错误处理
本章内容 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcWluZ2h1YXdlbmthbmc=/font/5a6L5L2T/fontsize/400/fi ...
- iOS网络高级编程:iPhone和iPad的企业应用开发(书籍学习)
作者:Jack Cox.Nathan Jones.John Szumski 译者:张龙 勘误 前言 第 I 部分 理解iOS与企业网络 这一部分从高层次概览了iOS网络以及针对移动网络架构的最佳 ...
随机推荐
- 创建外网 ext_net - 每天5分钟玩转 OpenStack(104)
虽然外部网络是已经存在的网络,但我们还是需要在 Neutron 中定义外部网络的对象,这样 router 才知道如何将租户网络和外部网络连接起来. 上一节我们已经为创建外部网络配置了ML2,本节将通过 ...
- iOS开发之新浪微博山寨版代码优化
之前发表过一篇博客“IOS开发之新浪围脖”,在编写代码的时候太偏重功能的实现了,写完基本功能后看着代码有些别扭,特别是用到的四种cell的类,重复代码有点多,所以今天花点时间把代码重构一下.为了减少代 ...
- linux内核中的每cpu变量
一.linux中的每cpu变量 看linux内核代码的时候,会发现大量的per_cpu(name, cpu),get_cpu_var(name)等出现cpu字眼的语句.从语句的意思可以看出是要使用与当 ...
- Spark入门实战系列--10.分布式内存文件系统Tachyon介绍及安装部署
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Tachyon介绍 1.1 Tachyon简介 随着实时计算的需求日益增多,分布式内存计算 ...
- Oracle11g中数据的倒库和入库操作以及高版本数据导入低版本数据可能引发的问题
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 在10g之前,传统的导出和导入分别使用EXP工具和IMP工具 ...
- AngularJs之Scope作用域
前言: 上篇博文AngularJs之directive中说了Scope作用域是个大坑,所以拿出来作为重点总结! 什么是scope AngularJS 中,作用域是一个指向应用模型的对象,它是表达式的执 ...
- ASP.NET MVC post请求接收参数的三种方式
1.在控制器中建立一个PostDemo方法,建立视图创建一个表单 <h2>PostDemo</h2> name的值:@ViewBag.name <br /> nam ...
- Ionic Lab下载地址
网站被墙,留下下载链接备用 Linux版本 Mac版本 Windows版本
- NanUI for Winform 使用示例【第一集】——山寨个代码编辑器
NanUI for Winform从昨天写博客发布到现在获得了和多朋友的关注,首先感谢大家的关注和支持!请看昨天本人的博文<NanUI for Winform发布,让Winform界面设计拥有无 ...
- php设置手机访问浏览器版apache配置
我们开发项目的时候经常会开发到浏览器版本的网页,这样我们就经常需要用手机连接局域网以方便测试,那么怎么配置服务器文件呢. 1.首先关闭电脑的windows防火墙 右击我的网络/windows防火墙 ...