Cocoa Touch Layer

来源:互联网 发布:美联储圣路易斯数据库 编辑:程序博客网 时间:2024/05/11 20:22

Cocoa Touch Layer

Cocoa Touch层包含了关键的库来构建iOS应用。这些库定义了应用的表现。他们提供应用的基本空间和提供关键技术,如多任务,以接触为基础的输入,消息推送,和许多高级的系统服务。当你设计你的应用时候,你需要优先研究他们。

高级别的特性

接下来的章节描述一些关键技术

  • App Extensions 应用扩展(App Extension Programming Guide) 
  • Handoff 传送(Guide) 
  • Document Picker 文档选择器 (Guide) 
  • AirDrop 
  • TextKit (Guide
  • UIKit Dynamics 
  • Multitasking (Guide
  • Auto Layout (Guide
  • 故事板 Storyboards 
  • UI State Preservation 
  • 苹果消息推动服务 Apple Push Notification Service  Local and Remote Notification Programming Guide
  • 手势识别 Gesture Recognizers Event Handling Guide for iOS
  • Standard System View Controllers (View Controller Programming Guide for iOS

  • App Extensions 应用扩展(App Extension Programming Guide) 
    IOS8让你在系统扩展区域中使用应用扩展,可以实现自定义功能在一个用户任务中。例如,你可以提供一个应用的扩展,帮助用户发送内容到公共分享网络。当用户安装和可使用扩展之后,他们可以选择在当前的应用里点击分享按键分享。你的自定义分享扩展给予接受,验证和发送用户内容。系统的扩展列表在共享菜单和依赖于用户选择。 
    在Xcode中,你创建应用扩展来添加预配置的应用扩展到应用里。 在一个用户安装一个包含扩展的应用后,“Setting应用”里面就有这个扩展了。当用运行其他引用,这个系统可以可视化扩展在系统的UI里,例如分享菜单。 
    IOS支持应用扩展
  • 分享,分享内容到公共网络或者其他地方。
  • 执行。执行一个小的任务
  • 小工具,提供一个快速升级或者允许一个简要式的任务在今日界面的消息中心里
  • 图片编辑,在Photo应用里执行一个图片或者视频的修改
  • 文档提供者,给予一个文档本地保存,使得其它应用可以访问。应用使用Picker界面来管理或移动文件。
  • 自定义键盘,在设备上所有应用,用可以使用自定义键盘 

每一个扩展的点定义了适当的APIs。当你使用应用扩展模板来开发,你可以获得默认的目标,内容方法存根和你选择的扩展属性列表设置。

  • Handoff 传送(Guide) 
    Handoff是OS X系统和IOS系统的一个特性,跨越设备的连续性延伸的用户体验。Handoff允许用户在一个设备上执行一个活动,跳转到其它设备,活肤一个相同的活动在其他设备上。例如,一个用户在Safari上浏览一篇长文章,摘取文章到一个使用相同AppleID的IOS设备上,或者在IOS的Safri上打开一篇相同的网页,并且像原来的设备一样,在同一个scroll点上。Handoff使得用户感觉到无缝的用户体验。 
    应用只需要采用的一个小的API就可以使用Handoff。每个在应用里进行的活动,将会在其他设备上恢复相应的内容活动。当用选择回复活动,这个对象发送到将要恢复的设备上。每个用户的活动对象有一个回调,在恰当的时间下恢复活动状态,如,在用户活动对象前,发送到设备间。 
    如果继续一个活动需要许多数据,用户的活动对象容易传送。在恢复中的应用有一个选项来打开一个流到源应用。基于文档的应用可以为用户自动在基于iCloud文档下支持活动。

  • Document Picker 文档选择器 (Guide) 
    Document Picker(UIDocumentPickerViewController)界面同意用户访问应用沙盒以外的文件。它是一个简单的在应用间的分享原理。同时允许复合的工作流,因为用户可以在不同应用里修改一个文档。 
    Document Picker让你从许多文档供应商里访问文件。例如,iCloud文档提供者同意访问在其他应用里的iCloud的文档存储器。第三方开发者可以提供额外的文档提供者来自扩展的存储提供者。

  • AirDrop 
    AirDrop提供用户在附近设备上分享图片,文档,链接和其他他不同的数据的能力。支持在UIActivityViewController类下分享文件到其他应用里。这些类显示不同的选项来分享内容到你指定的地方。如果你是用这个类,你需要考虑添加你的接口。 
    使用AirDrop接收文件,你需要

    • 需要在Xocde的Info.plist添加适当的文档类型关键字。系统使用这些信息来决定你的应用可以使用它
    • 当应用接收到文件,在应用里实现这个回调方application:openURL:sourceApplication:annotation:

    接收到的文件保存在Documents/Inbox 字典下,如果你计划修改这个文件,你必须把它移出这个字典再做修改。(在Inbox下,系统只允许读取和删除文件)。文件在这个路径下是被加密保护的,所以当设备锁上的情况下,是不能获取文件的。

  • TextKit (Guide
    TextKit是一个功能全面,一些列高级别的类,处理文本和精美的排版。使用TextKit,你可以在段落,专栏和页面里排出不同风格的版。你可以在任意区域使得文本像图片一样显示。同时你可以使用它来管理不同的字体。如果你考虑使用Core Text来实现阅读文字,你应该使用TextKit。TextKit是基于文本为基础的完整库。可以使应用更容易的创建,修改,显示和存储文本,和在IOS里使用更少的代码。 
    TextKit包含新的UIKIt类,随着已经存在的类 

    • NSAttributedString类,可以支持新的特性。 
    • NSLayoutManager 类,生成字形和文本排版
    • NSTextContainer类,定义一个区域的文本排版
    • NSTextStorage定义一个基础接口用于管理文本内容
  • UIKit Dynamics 
    应用现在可以在UIView对象制定动态行为,和对于其它对象也遵循UIDynamicItem 协议。(对象遵循这个协议叫dynamic item)。动态行为提供了一个方法,使得应用的用户体验,和真实世界的动态行为和特性相同。UIKit的动态支持以下特性:

    • UIAttachmentBehavior类, 定义一种连接关系,在两个动态物体或者一个动态物体和一个点。当其中一个移动,撞击另一个,另一个同样移动。这个连接不是完全静态的。一个撞击行为还有跳动和震动属性,来决定这个行为怎么变化。
    • UICollisionBehavior类,使得动态的items加入到碰撞下,和每一个item和这个item的边缘碰撞。这个行为同时使得他们在碰撞后做出适当的反应。
    • UIGravityBehavior类,为动态item添加重力矢量。重力矢量使得动态items在矢量方向上加速直到碰撞到适当的边界。
    • UIPushBehavior类,定义一个连接的或者瞬间的按压的动态items 
    • UISnapBehavior类,为一个动态item定义一个弹性点。这个Item 弹到一个点上表现出配置好的效果。例如,动态item可以弹到一个点上,像攻击到弹簧上。

    当你添加它到一个动画的对象上,动态行为变成活动的,这个动态对象定义为UIDynamicAnimator类。这个动画提供的执行动态行为内容。一个动态ITem可以拥有多个行为,但是多有的行为都必须是运动在同一个动画对象里。

  • Multitasking (Guide
    电池文件是一个重要的用户考量的IOS设备。在iOS的多任务模型的目的是最大限度地提高电池的寿命,同时给他们的应用需要做的重要的工作。当用户按Home键,前景的应用会排位到背景。如果应用没有太多的事情做,它就会被挂起,和放在一个冻结区域,内存不会在执行他的代码。应用需要提供特定的工作类型来告诉系统请求后台时间。 

    • 应用和请求有限的时间来完成一些重要的任务
    • 应用可以支持特定的服务来请求实现给予这些服务,如播放
    • 应用可以使用特定时间的本地通知来生成用户通知,即使应用没有在运行
    • 应用可以从网络下载特定内容
    • 应用可以下载内容后推送一个消息
  • Auto Layout (Guide
    自动适配帮你使用较少的代码建设动态界面。使用自动适配,你可以为怎么适配元素来定义规则在你的用户界面上。这些规则表达了一大堆类的关系,更直观的使用,比以前使用的springs and struts模型更直观。例如,你可以定义一个按键总是距离父界面的左边界20个像素点。

    • 他们支持本地化通过单独的字符串交换,而不是要求您更新你的布局。
    • 它们支持用户界面元素的镜像,以供右至左语言,如希伯来和阿拉伯语
    • 他们在界面里的或者controller层上对象间提供更好的分割责任 
      一个界面对象通常拥有标准的大小,他们在父界面下定位,和与自身的同等级的界面有位置关系。一个界面的控制可以推翻那些不按标准的需求。
  • 故事板 Storyboards 
    Storyboards,设计用户界面的,一个推荐的方式。Storyboards让你在一个地方设计你的用户界面,因此你可以看到你所有的界面,view controller,和明白他们是怎么一起工作的。一个重要的部分是,Storyboards有能力定义segues连接,他可以帮助view controller间的传送。这些传送允许你捕获你设定好的界面流,除了内容。你可以在表面上定义这个传送。在Xcode里,或者程序初始化它们。 
    你可以使用一个简单故事板文件,来存储你的所有应用中的界面,和viewcontroller,或者使用多个故事板来管理。在创建的时候,Xcode会把故事板的文件内容和把它分成分立的部分,这部分可以更好的使得初始化装载。你的应用不需要直接操作他们。UIKit库提供了便捷的类来访问故事板的内容。

  • UI State Preservation 
    状态保留提供了无缝的用户体验来使得你的应用总是处于运行,尽管它没有。如果系统的内存压力,他可以快速的关闭一个或者多个后台与应用。当应用从前景移动到背景,他可以保护界面和view controller的状态。到下一个周期,他可以保护信息状态到重启界面和viewcontroller,提供配置和让他显示和之前一样的内容,而不是重新打开。

  • 苹果消息推动服务 Apple Push Notification Service  Local and Remote Notification Programming Guide 
    苹果消息推送服务提供一个方法,来告诉用户IOS应用的新信息,即使这个应用没有在运行。使用这个服务,你可以在任何时候推送文本消息,和添加一个应用图标,或者音效在用户设备。这些消息让用户知道,他们需要打开你的应用来接受相关信息。在IOS7,你可以推送静态的消息让你的应用知道,新的内容可以下载。 
    从设计的立场,这是两个部分使得推送为IOS应用服务。第一,应用必须请求传送通知,和当传送后,马上处理通知。第二,你需要提供服务端,第一时间处理生成的通知。这个处理需要在你自己的本地服务器和与苹果推送服务一起工作才能生成通知。

  • Local Notifications (Local and Remote Notification Programming Guide) 
    本地通知补充现有的推送通知机制,为应用提供了一种生成的本地通知的方法,而不需要使用服务器。应用运行在后台的时候可以使用本地通知,来告诉用户一些重要的事情发生了。如,导航应用运行来后台,可以使用本地通知来警告用户什么时候转弯。应用同时可以设置一个在未来的时间本地通知,即使应用没有在运行,也可以传递通知。 
    本地通知的一个好处是,他们是独立于应用的。在设定好一个通知后,系统会管理传递他们,你的应用不需要运行。

  • 手势识别 Gesture Recognizers Event Handling Guide for iOS 
    手势识别常用手势的检测,如,在你的应用里swipes滑动和pinches捏。因为他们使用与系统一样的手势识别,所以手势识别为应用提供了一致的行为。使用一个,在应用里添加一个手势识别,给他一个运作方法去执行手势事件。手势识别是一个来自原始触碰的困难的最终工作和决定他们什么时候是个手势。 
    所有的手势识别都是基于UIGestureRecognizer类,决定了基本行为。UIKit支持标准的手势识别,如, taps轻拍, pinches捏, pans, swipes滑动, rotations旋转等。你可以定义一些手势识别在你的应用里。例如,你可以告诉轻拍这个行为是定义多个轻拍来执行你的方法。

  • Standard System View Controllers (View Controller Programming Guide for iOS
    许多系统库定义了view controller的标准系统界面。只要可能,使用提供的view controller好过自己定义的。更加鼓励使用这些view controller在你的应用里面实现你的用户界面。只要可能你需要执行一个接下来的任务,你可以使用view controller来自相应的库。

    • 显示和修改相关的信息。使用Address Book UI库的view controller
    • 创建和修改日历事件,使用EventKit UI库的view controller
    • 编写邮件或者SMS,使用Message UI库的view controller
    • 打开或者预览文件内容,使用UIKit库的UIDocumentInteractionController类
    • 照相或者在相册里悬着一个相片,使用UIKit库的UIImagePickerController类
    • 拍摄视频剪辑,使用UIKit库的UIImagePickerController类

Cocoa Touch Layer

接下来要介绍的是这个库和库下的功能

列表

  • 2.0 通讯录界面 AddressBookUI.framework (AB)
  • 4.0 日历事件UI _EventKitUI.framework 
    _(EK)
  • 3.0 游戏 _GameKit.framework 
    _ (Guide) (GK)
  • 4.0 广告 iAd.framework (Guide)(AD)
  • 3.0 地图 MapKit.framework (Guide)(MK)
  • 3.0 信息UI MessageUI.framework (About System Messaging)(MF)
  • 8.0 通知 NotificationCenter.framework (Guide)(NK)
  • 8.0 推送 PushKit.framework (PK)
  • 5.0 Twitter Twitter.framework(TW)
  • 2.0 界面 UIKit.framework(UI)

  • 2.0 通讯录界面 AddressBookUI.framework 
    提供通讯录的标准系统的显示界面,同时可以创建新的通讯录信息和修改已存在的信息。这个库规范了通讯录的界面,和简化了显示。使得所有程序使用的都是统一的界面。(AB)

  • 4.0 日历事件UI _EventKitUI.framework 

    为ViewController提供标准的系统日历接口,来显示和修改日历事件。在EventKit库里,这个库构建在关联数据之上。(EK)

  • 3.0 游戏 _GameKit.framework 
    _ (Guide
    支持Game Center,用户可以使用它来分享游戏关联的数据。(GK)

    • 允许用户创建网络账号,用户登录Game Center和与匿名用户交流。用户可以为自己的朋友设置标签。
    • 排行榜,支持上传游戏分数上Game Center,和检索分数。你可以使用这个特性让用户把自己最好的成绩告诉给他们的朋友。
    • 成就,允许应用记录用户在游戏里面产生的成就。
    • 挑战,用户可以在应用里发起挑战给朋友,来获得一个成绩或者成就。
    • 回合制游戏,创建一个持久的比赛。比赛的状态会存储在iCloud
  • 4.0 广告 iAd.framework (Guide) 
    可以让你在应用中投放以横幅为基础的广告。广告整合了标准的界面中,和推送你想要的界面。这个界面都是有苹果iAD服务,自动的获得相关的加载和推送不同的媒体,和处理广告点击事件。(AD)

  • 3.0 地图 MapKit.framework (Guide) 
    你可以把具有卷页功能的地图放在你的应用界面里。在你显示地图之前,你可以通过这个库来自动以地图内容和显示。你可以标志一个感兴趣的点并且标记注释,你也可以在地图上用自定义覆盖区域来点缀一个片区。例如,你可能是用一个区域来画巴士车站,使用注释来高亮附件的商店和饭店。 
    另外,显示地图的时候,这个库结合了地图应用和苹果地图服务来提供更好的导航。从地图应用,用户可以从应用上回调地图导航。应用可以提供专业的导航类型,例如地铁信息等。用户可以请求这些导航。应用同时可以从苹果服务器请求步行,和自驾导航,然后整合导航信息,提供点到点的导航路线给用户。(MK)

  • 3.0 信息UI MessageUI.framework (About System Messaging) 
    为你的应用提供Email和SMS短信显示。这些信息通过一个ViewController来推送到界面上。你可以在填写区域里填写收件人,主题,主要内容,和附件。在展示界面后,用户可以在发送前修改里面的信息。(MF)

  • 8.0 通知 NotificationCenter.framework (Guide) 
    创建一个小组件在信息中心显示通知。(NK)

  • 8.0 推送 PushKit.framework 
    提供注册支持VoIP应用。这个库替换以前注册VoIP应用的IPAs。取而代之的是保持一个持续的连接,因此消耗电源,当有电话信号进来时,应用可以通过这个应用获得通知。(PK)

  • 5.0 Twitter Twitter.framework 
    已经被Social库替换了。支持tweets的UI,和提供创建Urls来访问Twitter服务。(TW)

  • 2.0 界面 UIKit.framework 
    在IOS下,创建实现图形的关键基础设施,事件驱动的应用程序(UI)

    • 基本应用管理和基础控件,包含应用的主线程
    • 用户的界面管理,包含支持故事板(storyboards)和可显化管理(nib)文件
    • 一个Viewcontroller模型来压缩装在你的用户界面内容
    • 对象在标准的系统界面和控制下表现出来
    • 支持管理touch-和motion-事件
    • 支持文档模式包含 iCloud integration(Document-Based App Programming Guide for iOS)
    • 图形和界面支持,包含支持额外显示(View Programming Guide for iOS)
    • 支持多任务(Multitasking)
    • 支持绘画(Drawing and Printing Guide for iOS)
    • 支持定制标准的UIKitking控件
    • 支持文字和网络内容
    • 剪切,复制和粘贴
    • 支持用户界面内容动画效果
    • 在系统下,通过URL schemes和库接口,整合其他应用
    • 支持禁用用户的可访问性 
    • 支持苹果消息推送服务(Apple Push Notification Service) 
    • 本地消息的时间安排和传递(Local Notifications)
    • PDF创建
    • 支持使用类似系统自定义的界面键盘
    • 支持创建文本视图来和系统键盘交互
    • 支持通过邮箱,twitter,facebook或者其他服务器分享内容 
      除了支持建设应用的基本代码以外,UIKit同时支持一些设备的特殊特性。 
    • 内置相机
    • 用户的图片库
    • 设备名称和模型信息
    • 电源状态信息
    • 距离传感器信息
    • 通过耳机链接的远距离控制信息
0 0
原创粉丝点击