Cocoa Touch Layer

来源:互联网 发布:最新淘宝店铺装修教程 编辑:程序博客网 时间:2024/05/17 09:04

Cocoa Touch层

    Cocoa Touch层包含了创建ios应用程序的关键框架。这个层定义了基本应用程序的基础,并为关键技术提供支持,譬如多任务机制、触摸式输入、推送通知和其他许多高级的系统服务。当你设计程序时,你应该首先查看这个层次的技术,如果它们能满足你的需要时。


高级的特征

接下来的部分描述了一些Cocoa Touch层中的关键技术。


Auto Layout

在iOS 6的介绍中,自动布局改进了先前用于编排用户接口元素的“springs and struts”模式。由于自动布局,你可以定义属于自己的布局规则。这些规则解释了一个较大的关系类,并且能够更直观地使用。举个例子,你可以指定一个按钮的位置是距离它父类视图左边缘的20个点。

用于自动布局的本质四Objective-C的对象,我们称之为约束。此方法给你带来很多好处:

· 仅仅通过交换字符串来实现本地化,而不是改造布局。

· 如希伯来语和阿拉伯语等语言的用户界面元素的镜像。

· 在视图中的对象和控制器布局中有更好的分层责任。

一个视图对象通常清楚知道它的标准大小,在父类视图中的位置,还有它相对于其他视图的位置。视图控制器可以覆写这些值,当需要一些不标准的东西时。


Storyboards

在iOS 5的介绍中,storyboards作为推荐的方式取代了nib文件来设计应用程序的用户界面。与nib文件不同,storyboards让你在一个地方设计全部的用户界面。所以你可以看到你的视图和视图控制器,还有它们如何一起运行。storyboards的一个重要的部分是定义segues的能力,这是从一个视图控制器转换到另一个的。应用程序可以在XCode中直观地定义这些转换,或者在XCode中有计划地开始它们。这些转换允许你捕捉除了内容外,还能捕捉用户界面的流量。

你可以使用一个单一的storyboard文件来保存应用程序的视图控制器和视图,或者你可以使用多种视图storyboard来组成界面的每个部分。在建立时,Xcode执行storyboard文件的内容并且把它划分成离散的文件,使它们能够被单独加载。虽然你的应用程序永远也不会需要直接操控这些离散文件。UIKit框架提供了方便的类来访问storyboard的内容。


Document Support

在ios 5的介绍中,UIKit框架介绍了UIDocument类来管理与用户文件相关的数据。该类使的基于文档的应用程序更加容易实现,尤其是在iCloud中保存了文档的应用程序。除了为文件相关的数据提供了保存容器,UIDocument类还提供了内置支持异步读写文档数据,安全保存文档,自动保存文档,支持iCloud的冲突检测和支持平台文件和头文件的表现等功能。为了使用Core Data的应用程序的数据模型,你可以使用UIManagedDocument子类来管理你的数据存储。


Multitasking

建立在iOS SDK 4.0或以后的应用程序在用户按下Home键时不会终止。取而代之的是,它们转移到后台去执行上下文。由UIKit定义的多任务处理支持能够帮助应用程序顺利地转移到后台状态。

为了节省电池,大多数的程序都会在进入后台后片刻便被系统挂起。被挂起的程序仍然存在在内存中但是却不会执行任何代码。这样的行为允许应用程序在重新启动时能够迅速恢复,与此同时又不消耗电量。然而,应用程序可能可能会因为几个原因而在后台继续运行:

· 应用程序可以要求在有限的时间内完成一些重要的任务。

· 应用程序可以声明自己为支持特定服务,从而需要定期后台执行时间。

· 应用程序可以在指定的时间使用本地通知来产生用户警报,不管有没有运行。

不管你的程序是挂起还是仍然在后台运行,支持多任务处理机制确实需要在你的部分额外添加。系统会通知你的应用程序当它过渡到后台时。这些通知点提示你执行一些重要的应用程序任务,例如保存用户数据。


Printing

在iOS 4.2的介绍中,UIKit printing提供了允许应用程序无线发送内容给附近的打印机。在大多数情况下,UIKit做着所有与打印相关的繁重任务。它管理着打印接口,和你的应用程序一起提供可打印的内容,处理进程还有在打印机上实施打印。

应用程序所提交的打印工作都会移交给打印系统。一台打印机上的所有打印作业都需要排队并且遵循先到先打的原则。用户可以从打印中心的应用得知打印作业的情况,甚至可以使用应用程序来取消打印作业。所有其他的打印方面均由系统自动处理。

Note:无线打印只能用于支持多任务处理的装置。只可以使用UIPrintInteractionController对象来检测设备是否可以打印你的应用程序。


UI State Preservation

在iOS 6的介绍中,状态保存使得应用程序更加容易保存用户最后一次使用时的用户界面。当应用移动到后台,它会被要求保存试图的语义状态和视图控制器。当重新启动时,应用会使用这个状态来恢复它的界面,使它看起来就像没有被关闭过一样。UIKit提供了保存和恢复应用界面的基础,并支持状态保存集成到它自身。


Apple Push Notification Service

在iOS 3.0的介绍中,Apple的推送消息服务提供了一种提醒用户有新消息的方式,甚至当你的应用程序并没有主动运行。使用这项服务,你可以在任意时间推送文本消息,给你的应用程序的图标增加一个标记,又或者在用户设备上触发声音警报。这些信息让用户知道他们应该打开你的应用程序来接收相关的信息。

从设计的角度来看,有两部分使得推送消息能在iOS应用程序上运行。第一,应用程序必须请求通知的传递和当通知传递过来时处理通知的数据。第二,你需要提供一个服务器端的进程来产生通知。这个进程在你自己的本地服务上,和Apple Push Notification一起触发通知。


Local Notifications

在iOS 4.0的介绍中,本地通知通过给予应用程序一个产生通知的途径来补充现有的消息推送机制,而不是依靠外来的服务器。在后台运行的应用程序可以使用本地通知,就像当重要的事件发生时需要获取用户的注意的方式。举个例子,一个在后台运行的导航程序可以使用本地通知来提醒用户是时候转弯了。应用程序也可以通过使用未来的时间点来传递本地通知,即使程序并没有运行。

本地通知的好处是它们独立于你的应用程序。一旦计划了一个通知,系统管理就会输送它,不管你的程序是不是运行着。


Gesture Recognizers

在iOS 3.2的介绍中,手势识别是你连接视图的对象,并且用来检测常见的手势类型。在连接手势识别和你的视图后,你可以告诉手势识别什么手势出现时应该执行什么动作。然后手势识别的对象会跟踪原始的触摸事件,应用系统定义好的试探法来检测给定的手势是什么类型的。没有手势识别的话,你必须自己完成这项十分复杂的工作。

UIKit包含了一个UIGestureRecoginzer类为所有手势识别定义了基础的行为。你可以定义你自己的手势识别的子类或者使用UIKit提供的子类来处理下面这些标准的手势:

  • Tapping (any number of taps)

  • Pinching in and out (for zooming)

  • Panning or dragging

  • Swiping (in any direction)

  • Rotating (fingers moving in opposite directions)

  • Long presses


Peer-to-Peer Services
在iOS 3.0的介绍中,Game Kit框架提供了基于蓝牙的对等连接。你可以使用对等连接来与附近的设备开始通信会话,在多人游戏中实现多种功能。虽然这主要使用在游戏中,但你也可以在其他类型的应用中使用这项功能。

Standard System View Controllers

Cocoa Touch层中的许多框架都包含了用来保存标准系统界面的视图控制器。我们鼓励你在你的应用程序中使用这些视图控制器来保存一致的用户体验。不管什么时候你需要执行下面任务中的一个,你都应该使用相应框架的视图控制器:
· 展示或者编辑联系信息--使用Address Book UI框架的视图控制器
· 创建或编辑日程--使用Event Kit UI框架的视图控制器
· 创建一封邮件或者sms消息--使用Message UI框架的视图控制器
· 打开或浏览文件的内容--使用UIKit框架的UIDocumentInteractionController类
· 从用户的相册中获取图片--使用UIKit框架的UIImagePickerController类
· 拍摄视频剪辑--使用UIKit框架的UIImagePickerController类

External Display Support

在iOS 3.2的介绍中,外接显示器支持允许一些基于iOS的设备通过电缆与外部显示器连接。当连接时,相关的屏幕可以用来展示应用的内容。屏幕上的信息,包括其支持的分辨率,都是通过UIKit框架接口可以获取的。你也可以使用框架把你的程序桌面和屏幕连接起来。

Cocoa Touch Frameworks
接下来的部分描述了Cocoa Touch层的框架和它们所提供的服务。

Address Book UI Framework
Address Book UI框架(AddressBookUI.framework)是一个Objective-C程序接口,你可以用来它来展示标准的创建新联系人和编辑或选择已有联系人的系统界面。这个框架简化了你需要在应用程序中展示联系人信息的工作,也确保你的应用程序使用像其他程序一样使用相同的接口,也确保了跨平台的一致性。

Event Kit UI Framework
在iOS 4.0的介绍中,Event Kit UI框架(EventKitUi.framework)为日程相关的事件提供了保存标准系统界面的视图控制器。这个框架基于Event Kit框架的事件相关数据建立的。

Game Kit Framework

在iOS 3.0的介绍中,Game Kit框架(GameKit.framework)让你为你的应用程序添加对等网络的能力。特别的屎,这个框架提供了支持对等连接和游戏中的语音功能。虽然这些功能在多人网络游戏中是很普遍的,但是你可以将它并入游戏以外的应用程序。这项框架通过简单的基于Bonjour顶层类来提哦你个网络功能。这些类抽象出许多网络的细节。为了可能没有网络变成经验的开发者,该框架允许他们在自己的陈谷香中合并网络功能。
在iOS 4.1的介绍中,Game Center是Game Kit框架的扩展,支持以下功能:
· 允许用户创建自己的在线别名。用户登陆Game Center并通过他们的别名和其他用户互动。玩家可以设置状态信息,也可以标记其他人为他们的朋友。
· 排名,允许你的应用程序通知用户分数给Game Center并检索。你可以使用这项功能来展示你最好的分数。
· Matchmaking,允许你通过连接玩家来创建多人游戏。
· 成就,允许你记录玩家在你的游戏中达成的成就。
· 挑战,允许玩家挑战朋友,创建新记录。
在iOS 5 或以后的版本,你可以使用GKTurnBaseMatch类来实现支持回合制游戏。

iAd Framework
在iOS 4.0的介绍中,iAd框架(iAd.framework)让你输送基于横幅的广告。广告是和标准视图合并一块。视图本身和苹果的广告服务一起自动处理所有和加载、保存有关的内容,并响应这些广告。

Map Kit Framework
在iOS 3.0的介绍中,Map Kit框架(MapKit.framework)提供了一个滚动的地图界面,你可以将其集成到你现有的视图层次中。你可以使用这个地图来提供方向或感兴趣的地方。应用程序可以通过编程设置地图属性,或者让用户自由操纵它。你也可以用自定义图片和内容标记地图。
在iOS 4.0中,基础地图视图支持拖动的注解和自定义叠加。拖动式注解允许你通过编程或者用户互动来调换已存在的注解。覆盖提供了一种方式来创建复杂的地图标记。
在iOS6.0中,现在你可以创建一个路线应用来为用户提供方向。当用户需要公交相关方向时,地图应用可以让用户选择的应用程序接收这些方向。另外,所有应用可以要求地图应用提供驾驶方向,展示多种感兴趣的路线。

Message UI Framework
在iOS 3.0的介绍中,Message UI框架(MessageUI.framework)提供了支持创建和发件箱中的邮件信息。这个支持由你在你的应用程序中提出的视图控制器接口所组成。你可以使用这个视图控制器的功能来预填充设置收件人,主题,正文和其他要包括的附件的信息。在提出视图控制器以后,用户可以在发送短信之前有机会选择。
在iOS 4.0和以后的版本,这项框架提供了一个呈现短信组成屏幕的视图控制器。你可以使用这个视图控制器来创建和编辑SMS短信而无需离开你的应用程序。就像邮件组成界面一样,这个界面给了用户发送之前选择收件人的选择。

UIKit Framework
UIKit Framework框架(UIKit.framework)为实现图形化,事件驱动的应用程序提供了关键基础。使用该框架来实现以下关键功能:
· 应用程序管理
· 用户界面管理,包括支持storyboards和nib文件
· 图形和桌面支持,包括多展示
· 多任务管理
· 打印管理
· 支持自定义标准的UIKit控件外观(iOS 5.0及以后版本)
· 支持从其他视图控制器合并的视图控制器的实现(iOS 5.0及以后版本)
· 支持处理触摸和基于运动的事件
· 对象表示标准的系统视图和控制
· 支持文本和web内容
· 剪切,复制和粘贴
· 支持用户界面的动画内容
· 通过URL方案和框架接口整合其他应用程序
· 无障碍支持残疾用户
· 支持苹果推送通知服务
· 本地通知
· 创建PDF
· 支持使用自定义输入视图
· 支持创建自定义文本视图
· 支持通过邮件,推特,Facebook和其他服务分享内容
除了提供基本的代码来建立你的应用意外,UIKit也采用了一些特定设备的功能:
· 加速计数据
· 内置摄像头
· 用户相册
· 设备名和型号信息
· 电池状态信息
· 接近传感器信息
· 远距离操控信息