Apple Watch如今对于第三方开发者来讲更多的仍是一块额外的屏幕。暂时WatchKit没有能给出足够的接口。如今Watch App的主要运算逻辑须要依赖iPhone,Apple也承诺会有原生的手表App,可能要等到Apple Watch和WatchKit的彻底版面世的时候。git
屏幕尺寸 | 38mm | 42mm |
---|---|---|
分辨率 | 272 x 340 | 312 x 390 |
宽高比 | 4:5 | 4:5 |
主屏模式 | Glance模式 | 通知模式 |
---|---|---|
主界面 | 单屏即时信息页面 | 消息通知界面 |
可自定义布局,放置button等控件 | 全部信息必须在一屏内展现,不能有交互控件,点击进入Watch应用 | 有通知的时候唤起,可添加合适的按钮 |
![]() |
![]() |
![]() |
Short Look | Long Look |
---|---|
查看屏幕上包含应用图标、名称、简单通知内容等信息 | 应用图标和名称将会移至屏幕顶端,内容占据主要的显示空间,佩戴者能够滑动来完成其它交互 |
![]() |
![]() |
static | dynamic |
---|---|
直接载入 | 初始化interfaceController后载入 |
![]() |
![]() |
只支持如下手势,不支持自定义手势github
手势 | 行为 |
---|---|
纵向滑动 | 浏览内容 |
横向滑动 | 页面间切换 |
点按 | 选择内容 |
长按挤压 | 打开菜单 |
数字表冠 | 旋转,调整滚动速度 |
屏幕边缘向左扫 | 返回上一个界面 |
屏幕底部向上滑 | 打开Glance界面 |
一个完成的Watch应用由 WatchKit App 和 WatchKit Extension两部分组成,WatchKit App负责展现,安装在Watch上,WatchKit Extension负责业务和控制逻辑,安装在iPhone上。全部运算、逻辑以及控制都是在iPhone上完成。经过WatchKit通信
数组
Watch App 控制流
xcode
ViewController 生命周期
缓存
WKInterfaceController 至关于UIViewController 。生命周期方法分别是:架构
-initWithContext: 被初始化时调用,通常在这里配置视图元素,至关于-viewDidLoad
-willActivate 将要呈现的时候调用,也能够在这个方法中进行视图元素的设置,至关于-viewWillAppear
-didDeactivate 呈现后调用,在这个方法中停用持有self的对象,如NSTimer。至关于-viewDidDisappearapp
WKInterfaceObject 及其子类布局
WKInterfaceObject 至关于UIView的代理,WatchKit实际呈现的View对于开发者来讲是不可见的,只能经过WKInterfaceObject对UI对象属性进行设置,能够设置的属性很是少。学习成本并不大。
WKInterfaceButton 至关于UIButton的代理
WKInterfaceImage 至关于UIImageView的代理学习
WatchKit独立于UIKit,全部的类都继承自NSObject,没有完整的Response chain动画
Watch App 的视图开发不能使用代码,必须StoryBoard。
Watch App 采起的布局方式和 iOS App彻底不一样。不能使用 autoLayout或者坐标。只能使用相对布局。
水平:left center right
垂直:top center bottom
View Size可使用三种方式设置:
Size To Fit Content : View的大小适应内容的大小
Relative To Container : 相对容器设置自身大小
Fixed :设置固定的宽高
WKInterfaceGroup 布局容器
貌似其余的WKInterfaceObject子类对象都不能重叠,只有这个类能够同其余的WKInterfaceObject对象重叠布局。至关于Android的layout布局控件。
WKInterfaceTable 列表视图
相对于UITableView,不须要设置delegate和dataSource。在初始化的时候直接设置行数和样式。
经过-setNumberOfRows:withRowType:
经过-rowControllerAtIndex:枚举每一个行进行设定。
经过rowController设置cell样式,至关于UITableViewCell。rowController继承自NSObject,这点同其余WK组件不一样。显示逻辑须要在SB中设置,并绑定。细节看代码
-(void)table:(WKInterfaceTable *)table didSelectRowAtIndex:(NSInteger)rowIndex 实现这个方法接受table的点击回调,不须要也没法设置delegate。
Menu 视图
在SB中加入Context Menu,长按屏幕呼出。
能够经过SB或者代码的方式设置Menu Item。上下文环境调用如下方法添加:
-addMenuItemWithItemIcon:title:action:
-addMenuItemWithImageNamed:title:action:
-addMenuItemWithImage:title:action:
-clearAllMenuItems除了用SB设置和以上方法外,没法获取WKInterfaceMenu和WKInterfaceMenuItem的实例或者代理。
WKInterfaceImage
至关于UIImageView
-setImageNamed: 获取Watch App的图片,注意这个图片必须存储在Watch App,手表本身的bundle里。Extension中的图片用这个方法是没法显示的。
-setImage: -setImageData: 从Extension中获取图片,经过蓝牙传送到手表。
能够经过WKInterfaceDevice 的 -addCachedImage:name: 方法将Extension中获取的图片缓存到手表中。每一个 app 的 cache 的尺寸大约是 20M,超过的话 WatchKit 将会从最老的数据开始删除,以腾出空间存储新的数据。
栈导航方式,相似UINavigationController。触碰左上角可返回
-pushControllerWIthName:context: 第一个参数是Controller对应的Identifier字符串,在SB中设置。可经过content传递数据。
-popController
-popToRootController
modal方式。行为基本同UIKit同样,不一样的是触碰左上角可返回
-presentControllerWithName:context:
-dismissController
分页导航。相似UIPageController。左右滑动切换
-presentControllerWithNames:contexts: 传入 names 和 contexts数组,经过这种方式被呼出的 Controller 将以 page 导航方式呈现。
全部的导航方式均可以经过代码或者SB的方式实现。
须要xcode6.2以上版本运行
选iwatch WatchKit App运行