Glance在英语中的字面意思是(一瞥;一滑;闪光),由此可见在WatchKit的UI体系中,Glance担负的任务是为用户提供实时快捷,简单明了的信息获取窗口。对Watch app来说,Glance是可选项,开发者可以选择性的对其进行实现。
一、特性
- 唯一性:一个APP只允许有一个Glance控制器
- 实时性:及时更新Glance,以避免Glance展示出过期信息
- 聚焦性:在Glance上永远都只展示最重要的数据
- 只读性:Glance是只读的,不能与用户操作进行交互
- 基于模板:Glance是基于模板设计的,且Glance的界面范围仅限于单个屏幕
二、生命周期
Glance界面控制器的生命周期和其他WatchKit界面控制器类似,不过Glance的界面控制器的初始化要更早,以便于Glance能快速的显示给用户。为确保展示的信息是最新的,需要在willActivate方法中包含检查方法,以避免Glance展示出过时的信息。
在WatchKit的启动顺序链中,WatchKit会自动针对当前的场景创建适用的controller,如果用户正在查看弹出的Glance,则创建Glance关联的controller;如果用户直接启动watch app,则WatchKit会从storyboard中载入对应的初始化controller。
以上controller均由一个WKInterfaceController
的子类进行管理,以下是其关键方法:
方法名 | 作用 |
---|---|
initWithContext: | controller初始化方法 |
willActivate | UI加载完毕后调用 |
didDeactivate | watch app运行完毕即将失效前调用 |
注意:一旦
willActivate
被调用,则controller中的所有属性操作都将变得不可用,因此不能在willActivate
中进行属性设置。(使timer无效化或者停止动画之类的操作是可以的)
三、Glance界面
1.接入点
EntryPoint,与传统iOS App在stroyboard中的表现类似,在增加WatchKit的target,并包含Glance之后,storyboard将会为Glance准备好UI界面与接入点。
2.Glance Interface Controller
Glance对应的Glance Interface Controller是WKInterfaceController
的子类,其主要功能是为Glance配置布局,因此其实现也非常简单,主要包括以下两个方法:
initWithContext
:用于初始化GlancewillActivate
:用于更新Glance的UI界面
当需要改动已经展示在屏幕上的UI元素时,我们可以使用NSTimer
对象,或使用WatchKit中新加入的如WKInterfaceDat
和WKInterfaceTimer
等对象来对时间和计时进行操作。
3.自定义Glance启动界面
在WatchKit中,当用户点击弹出的Glance时默认为打开Watch App并展示main interface controller管理的界面。我们可以在Glance的controller中调用updateUserActivity:userInfo:
方法,自定义从Glance启动后Watch app展示的界面,方法如下:
- glance interface controller
- 实现
initWithContext:
和willActivate
方法。 - 调用
updateUserActivity:userInfo:
方法,传入userInfo参数。
- main interface controller
- 实现
actionForUserActivity:context:
方法,根据传入的userInfo参数展示对应的interface controller,生产一个comtex对象并把它传入interface controller。
4.其他注意事项
- Glance底部区域是留给页面指示器圆点的。