WatchKit 框架: 将应用程序从裤兜里取出来

本文译自:WatchKit Framework: Taking Apps Out Of Your Pocket

你是否已经厌倦了总是需要将 iPhone 从裤兜里取出来才能查看消息?你希望像 Michael knight 一样,通过手腕就能与朋友通话吗?苹果已经让其变得可能:全新的 Apple Watch 和非常酷的 WatchKit 框架。

在为 Apple Watch 开发应用程序(也称为Watch 应用程序)时,开发者需要清晰的知道,目前Watch 应用程序需要一个运行在 iPhone 上的应用程序。因此,需要有两个可执行文件:

  • Watch 应用程序将运行在 Apple Watch 中,里面包括 storyboard,以及在应用程序界面渲染中需要用到的资源文件。
  • WatchKit 扩展将运行在 iPhone 中,包括管理应用程序界面的逻辑代码,以及处理用户的交互操作。

当开发一个 Apple Watch 应用程序时,在 storyboard 中的每个 scene 都需要对应的创建一个 WKInterfaceController。这个类有2个重要的方法:initWithContextwillActivate,它们负责获取需要显示的数据,以及初始化并配置可视化模块,例如按钮或文字标签。

如果需要创建一个 view 来显示收到的信息(例如收到一条 iMessage 通知,邀请你吃午饭,界面中有按钮需要你来接受或者拒绝邀请。),此时需要实例化一个 WKUserNotificationInterfaceController,该类继承自 WKInterfaceController

在上面的 interface control 类中,还有另外一些有意思的方法:

  • presentTextInputControllerWithSuggestions:completion:这个方法的作用是在屏幕中以模态的方式给用户显示一个文本输入界面——通过让用户选择给出的建议文字。
  • updateUserActivity:userInfo:获得当前应用程序的 activity(例如用户在屏幕中做了一下 tab 操作),并将其报告给用户的 iPhone,以进行相关的处理。

在 Watch 应用程序中,有一个重要的概念就是 glances。其实 glances 就是应用程序中一种特殊的界面,用来向用户显示特定的信息,它的特殊性就在于其无法滚动,并且是只读的。这也是为什么 glance 不能包含 UI 组件的缘故,例如按钮,文本输入框或滑块。

在 WatchKit 中,我们可以发现有 WKInterfaceDevice,该类包含 Apple Watch 中的用户配置相关信息。通过该类,我们可以获取相关信息,与用户账号相关联,并显示到程序中。

该类另外一个重要的作用就是在 Apple Watch 上缓存图片,这样在将来可以使用这些缓存图片,以此避免每次都需要创建这些图片,进而降低了程序的性能。

该类的一些方法如下:

  • preferredContentSizeCategory:获取有用户自定义的字体大小。这个方法对于辅助-驱动的应用程序非常重要。
  • addCachedImage:name:将传入的图片添加至设备的缓存中。
  • removeCacheImageWithName:移除之前缓存的图片。

最后,WatchKit 引入了几个 interface object 进行界面的构建,这是 UIKit 的定制版本。例如 WKInterfaceButton, WKInterfaceDate, WKInterfaceImage, WKInterfaceLabel, WKInterfaceMap, WKInterfaceSlider, 和 WKInterfaceSwitch等。

说句实话,我还没有戴过 Apple Watch,但可以肯定的是,这将意味着新技术的革命,期待吧!