低层次框架提供IOS的基本服务和技术,高层次框架建立在低层次框架之上用来提供更加复杂的服务和技术,较高级的框架向较低级的结构提供面向对象的抽象。
在开发应用时应尽可能使用较高级的框架。如果要开发的国内在高层框架中没有提供,你也可以使用较低层框架和技术。
Foundation和 UIKit框架是应用编程用到的两个主要的框架,能够满足大多数应用程序的开发需求。
UIKit框架提供的类,用于创建基于触摸的用户界面。所有 iOS 应用程序都是基于 UIKit, 没有这个框架,就无法交付应用程序。UIKit提供应用程序的基础架构,用于在屏幕上绘图、处理事件,以及创建通用用户界面及其中元素。UIKit还通过管理屏幕上显示的内容,来组织应用程序。
Foundation框架为所有应用程序提供基本的系统服务。应用程序以及 UIKit和其他框架,都是建立在 Foundation 框架的基础结构之上。 Foundation框架提供许多基本的对象类和数据类型,使其成为应用程序开发的基础。它还制定了一些约定(如用于取消分配等任务),使代码更加一致,可复用性更好。
CocoaTouch Layer包含创建ios应用关键的框架。该层包含的框架定义应用的外观,也提供基本的应用基础和关键的技术支持,例如多任务、触摸输入、推送通知和许多其它的高级系统服务。在开发应用时,应当首先研究该层的技术和技术看是否能够满足需要。
Cocoa Touch Layer包含如下关键技术
1).AirDrop
AirDrop允许用户与附近设备共享图片、文档、urls链接以及其它种类的数据。
2)、Text Kit
TextKit是处理文本和排版的一个全功能、高级别的类集合。使用Text Kit你能在段落、列或者页上对带有风格的文本进行布局;也能在任意区域(如图形)周围布局流动的文本;还能用它来管理多种字体。
开发应用时应该首先考虑使用Text Kit来进行文本呈现,而不是Core Text。Text Kit与所有UIKit中的基于文本的控制集成允许应用更容易地创建、编辑、显示和存储文本。
3)、UIKit Dynamics
UIKit dynamics用来为符合UIDynamicItem协议的UIView对象或其它对象规定动画行为。通过在应用的UI中集成真实世界行为和特性进,动画行为为应用提供了一种增强用户体验的方式。
4)、Multitasking
在ios中多任务用来设计来使电池使用时间最大化。
5)、Auto Layout
自动布局帮助你使用非常少的代码来建立动态接口。
使用AutoLayout定义如何在用户接口上布局元素的规则,这些规则表达了视图类之间的关系,如规定一个按钮总是处于它的父窗口的左边缘20个点。
在Auto Layout中使用的实体是被称为constraints的Objective-C对象。
6)、Storyboards
串联图 是设计应用用户接口的推荐方式。串联图让你在一个地方就能够设计全部的用户接口,方便在一个位置看到所有的视图和视图控制器以及理解它们是如何一起工作的。串联图的一个重要的部分是定义segues(segues是从一个视图控制器到另一个的转换)。这些转换代表用户接口之间的交互。你可以使用XCOE来可视的定义这些转换或者通过编程启动它们。
你能使用一个单串联图文件来存储所有的应用视图控制器和视图,或者使用多个视图串联图文件来组织用户接口。
在应用建立时间,Xcode读取串联图文件的内容并把它分成多个能独立加载的离散的片断,以便获得更好的性能。UIKit框架提供了相应的类来从程序中存取一个串联图的内容。
7)、UI State Preservation
UI状态保存能够使应用表现的一直运行,从而为用户提供无缝的体验。如果系统遇到内存压力,系统可能安静地强制停止一个或多个后台应用。
当应用从前台移到后台时,该服务能保存应用的视图和视图控制器的状态。在下次应用重新启动时,能够使用先前保存的状态信息来恢复视图和视图控制器到它们先前的配置,使应用表现得好像一直在运行。
8)、Apple Push Notification Service
苹果的推送通知服务提供了一种提示用户关于新信息的方式,即使应用当前不在激活运行状态。
使用该服务,你能推送文本通知,在应用图标上增加一个标记或者在任意时间触发声音提示。
这些消息让用户知道他们应该打开应用来接收相关信息。自Ios7开始,你甚至能推送无声的通知来让应用知道有了新的内容可以下载。
为了使用IOS应用的推送通知,用户需要做两部分的工作。首先应用必须登记该通知服务以及在通知被提交时处理相关的通知数据。第二,你必须提供一个服务端的进程来产生通知。
服务端的进程可以使用你自己的本地服务器或者使用苹果的推送通知服务。
9)、Local Notifications
本地通知作为推送通知机制的补充,可以给应用提供一种不依赖外部服务器产生本地通知的方式。
运行在后头的应用能使用本地通知作为当重要的事件发生时引起用户注意的一种方式。例如,运行在后台的导航应用能使用本地通知来提示用户什么时间该转弯了。
应用也能调度本地通知在将来的时间提交以及使那些通知在应用不运行也能被提交。
本地通知的一个优点是它们与你的应用是独立的。在一个通知已被调度,系统管理它的提交。另外当通知被提交时你的应用甚至不必运行。
10)、Gesture Recognizers
手势识别用来检测通常类型的手势。由于手势识别使用与系统检测手势相同的试探方法,因此手势识别为应用提供了一个一致的行为。为了使用它,你能在你的视图上附加手势识别功能和并给它提供一个在手势出现时要执行的方法。
手势识别跟踪原始的触摸事件和确定它们什么时候与想要的手势匹配。
11)、System View Controllers
许多系统框架为标准的系统接口定义了视图控制器。只要有可能,为了呈现一致的用户体验,就应该使用系统提供的视图控制器而不是创建一个新的。