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];

时间: 2024-12-20 12:25:25

iPad编程的相关文章

故事板(Storyboard) 、 iPad编程 、 App和VC的生命周期

1 创建动态TableView 1.1 问题 动态表视图就是显示多少分区,多少行以及每一行的显示内容都是根据数据源来决定.之前我们学过用xib展示动态表视图,本案例将学习如何使用Storyboard展示动态表视图,如图-1所示: 图-1 1.2 方案 首先创建一个SingleViewApplication项目,Xcode会自动帮我们创建好一个TRViewController类,并且自动带有Storyboard文件.将自动创建的TRViewController类删除,新建一个TRTableView

多媒体音频视频与iPad基本使用

多媒体音频视频与iPad基本使用 一.多媒体播放 1.配置库  -->  AVFoundation.framework 头文件   #import <AVFoundation/AVFoundation.h> 2.播放音频 (1)播放本地音频 @interface ViewController () { // AVAudioPlayer *_player; UISlider *_volumeSlider; //音量控制 // UIProgressView *_playProgressVie

2015最新iOS学习线路图

iOS是由苹果公司开发的移动操作系统,以xcode为主要开发工具,具有简单易用的界面.令人惊叹的功能,以及超强的稳定性,已经成为iPhone.iPad 和iPod touch 的强大基础:iOS 内置的众多技术和功能让 Apple设备始终保持着遥遥领先的地位. iOS学习路线:http://www.mobiletrain.org/page/ios.html 课程分  类 课程模块 模块介绍 课程内容 Part1C语言 C语言和Objective-C语言 C语言 Mac系统及常用工具.进制:C数据

iOS知识点大纲

Xcode使用 1. 创建UI工程 基本控件 2. UILabel标签 3. UIButton按钮 项目: 计算器项目 4. UIImageView(UIImage)   项目: 人人界面 5. UIView 视图+触摸   项目: 人人界面 6. UITextField输入框/电子词典 7. iOS常用控件 8. 手势操作 视图控制器和多视图程序 9. UIViewController 10.UINavigationController 项目: 人人界面模拟 11. UITabBarContr

为何需要调用“super viewDidLoad”

一.为何需要调用"super viewDidLoad" - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } - (void)viewDidLoad { [super viewDidLoad]; } 在上面的代码中,什么需要调用父类相应的方法呢? 以viewDidLoad为例,父类(super)中的viewDidLoad会帮助你做一些初始化的工作,比如A是父类,B继承A,B在viewDidLoad方法中

简介Objective-C语言

2011-05-11 11:20 佚名 百度百科 字号:T | T Objective-C,是扩充C的面向对象编程语言.主要使用于Mac OS X和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言.Objective-C可以在gcc运作的系统写和编译,因为gcc含Objective-C的编译器. AD:干货来了,不要等!WOT2015 北京站演讲PPT开放下载! Objective-C,通常写作ObjC和较少用的Objective C或O

iOS网络高级编程:iPhone和iPad的企业应用开发之错误处理

本章内容 ●    iOS应用中的网络错误源 ●    检测网络的可达性 ●    错误处理的经验法则 ●    处理网络错误的设计模式 到目前为止,我们所介绍的iPhone与其他系统的网络交互都是基于一切正常这个假设.本章将会放弃这个假设,并深入探究网络的真实世界.在真实世界中,事情是会出错的,有时可能是非常严重的错误:手机进入与离开网络.包丢掉或是延迟:网络基础设施出错:偶尔用户还会出错.如果一切正常,那么编写iOS应用就会简单不少,不过遗憾的是现实并非如此.本章将会探讨导致网络操作失败的几

爬虫概念与编程学习之如何爬取视频网站页面(用HttpClient)(二)

先看,前一期博客,理清好思路. 爬虫概念与编程学习之如何爬取网页源代码(一) 不多说,直接上代码. 编写代码 运行 <!DOCTYPE html><html><head><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><meta http-equiv="Content-Type" content="text/html; c

浅谈iOS网络编程之一入门

计算机网络,基本上可以抽象是端的通信.实际在通讯中会用到不同的设备,不同的硬件中,为了能友好的传输信息,那么建立一套规范就十分必要了.先来了解一些基本概念 了解网络中传输的都是二进制数据流.  2.了解网络编程概念. 认识网络: // 网络概念 <1> 经常见到的: 网卡/网线/IP地址/子网掩码/路由地址/DNS服务器地址 作用? // <2> 容易忽略的:MAC地址/数据/数据包 // <3> 网络编程的概念:客户端/服务器/请求/响应/数据流 // 网络是数据交互