WatchKit编程指南:Glance--Glance开发基础

翻译自苹果官方文档 WatchKit Programming Guide: Glance Essentials ,WatchKit Programming Guide: Managing Your Glance Interface

Glance是Apple Watch三种用户交互之一,就和它的字面意思一样,它将重要信息展示在一个视图里,让用户能在一瞥之间快速获取,是对一个完整的Watch app的有益补充。 

一个Glance是用户浏览Watch app中的重要信息的补充方式,它对于Watch app并不是必需的。Glance应该及时的提供直接相关的信息。比如,一个日历应用的glance可以展示用户的下一场会议,而一个航班应用的 glance能够展示你要搭乘班机的登机口信息。图片12-1显示了Lister示例应用的glance,它显示用户to-do列表的已完成和剩余项目的 条数。

图片12-1 Lister示例应用的Glance界面

glance_lister_2x.png

Glance是Watch app和WatchKit扩展的一部分,你的glance界面位于Watch app的storyboard文件当中,并且这个界面被自定义的 WKInterfaceController 对象管理。需要注意的是,这个glance界面控制器只负责设置glance中的内容,Glance不支持互动操作,触摸glance将会自动启动对应的Watch app。 

Glance的生命周期

Glance界面控制器的生命周期和其他WatchKit界面控制器一样,不过glance的界面控制器的初始化要早于其它,以便于glance能快速的显示给用户。考虑到glance从初始化到显示可能会花费一些时间,可能让信息过时,你需要在 willActivate 方法中包含检查,以确保显示的信息是最新的。 

如需获取界面控制器的声明周期信息,阅读 WatchKit Extension Life Cycle 。 

Glance界面指南

Xcode提供几种固定的布局来安排glance中的内容,在选定适合你的一种布局后,遵循下面的指南来填充内容:

· Glance的设计目的在于快速的传达信息。不要显示一堆文字。适当的使用图像、颜色和动画来快速传达信息。

· 聚焦在最重要的数据上。Glance不是你的应用的替代。就像Watch app是对应的iOS app的缩水版,你也可以把glance看做Watch app的缩水版。

· 不要在glance界面中包含交互控件。比如按钮、选择器、滑动器和菜单。

· 避免使用表格和地图。尽管并没有禁止你这么做,手表上有限的控件让表格和地图不是那么有用。

· 让显示的信息保持及时。使用所有可用的资源,包括时间和地理位置,来向用户提供有用的信息。并且注意更新你的glance,以避免因为glance初始化到显示花费的时间而让信息过时。

一个app只允许有一个glance界面控制器,因此你需要在这一个控制器中显示所有你希望展示的内容。



当添加Watch app target到你的Xcode工程当中时,你能指定是否需要一个glance界面。如果你在一开始忘了添加,也能稍后向工程中加入glance。一个glance界面控制器在storyboard中的显示有些不一样的地方,特别是,它有一个Glance入口点对象,就像图片 13-1显示的一样。

图片 13-1 一个拥有glance入口点对象的界面控制器

glance_interface

Glance界面由自定义的WKInterfaceController子类驱动,此子类的实现方式和其他界面控制器类相同。

实现一个Glance界面控制器

Glance界面控制器的具体实现比较简单,因为它唯一的任务是设置glance中的标签和图像内容。所以你的glance基本上只需要实现两种方法:

  • 使用initWithContext:方法来初始化你的glance界面,并且设置标签和图像的初始值。

  • 基于内容的改变,使用willActivate来更新glance。

当glance已经显示给用户后,如需更新,使用NSTimer对象,你也能使用WKInterfaceDate 和 WKInterfaceTimer 类来显示日期和时间信息,以及倒计时或者显示特定时间。

自定义从Glance启动应用

当用户触摸glance,Apple Watch能够启动对应的Watch app。一般来说,启动app将显示它的主界面控制器。如果你想显示一个不同的界面控制器,调用你的glance界面控制器的updateUserActivity:userInfo:方法。

调用updateUserActivity:userInfo:方法将告诉WatchKit来请求启动时需要显示的界面控制器。在启动进程当中,WatchKit调用主界面控制器的actionForUserActivity:context: 方法来找出到底需要显示哪个界面控制器。在你的Watch app的主界面控制器里实现这个方法,并让它返回你需要的界面控制器名称。通过这个方法,你也能提供一个上下文对象,并将它作为参数传递给指定的界面控制器的initWithContext: 方法。

总结一下,为了在触摸glance时启动并显示一个不同的界面控制器,你需要按如下步骤操作:

  • 在glance界面控制器中:

    •   配置glance的initWithContext: 和 willActivate ,这一步和其他情况是相同的。

    •   调用updateUserActivity:userInfo:方法,并且使用userinfo参数来传达你的应用glance的状态。

  • 在你的应用的主界面控制器:

    •   实现actionForUserActivity:context: 方法,使用提供的userinfo字典来确定显示哪个界面控制器,你还应该生成一个上下文对象并将它传递给指定的界面控制器。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值