上篇简单介绍了创建了一个Apple Watch开发的project的过程,那么对于新生成的文件有什么用呢?老项目怎么适配Apple Watch呢?下面我就来简单介绍下WatchKit和Watch项目中的文件作用、及其布局特点。
一、 旧项目适配Apple Watch
普通老项目可以添加Apple Watch吗?需要注意什么?有些人直接在旧的项目中,按照上篇写的那样去添加一个Apple Watch的Target,但是一编译发现出错了,报错如下:
error:WatchKit apps must have a deployment target equal to iOS 8.2 (was 8.3).
看到错误,顾名思义,我们去修改下Watch app对应的deployment target版本就行了,具体如下图:

二、项目简介
上篇中我们创建完项目后发现它给自动创建了几个storyboard,选中Interface.storyboard,右边会发现有四种storyboard,即我们第一篇中所说的三种交互方式或者说界面类型:Watch app、glance、notification(静态、动态)

而我们回到Extension代码部分,选中InterfaceController.h文件,我们发现这里已经没有之前的UIKit框架了,而是WatchKit,之前的UIView之类的在这都不好使了,而是一套新的布局方式;和UIViewController类似,这里也有控制器,但是它继承自WKInterfaceController,它是NSObject的子类,和UIViewController没有任何关系:

这也证实了我们第一篇时所说的Apple Watch和iPhone的联动绑定关系:

三、Watch消息提醒
另外我们点击PushNotificationPayload.apns文件,会发现是一个json字符串,里面的key关键字,相信你们并不陌生,没错这就是配置notification界面的配置文件,有消息提示内容和按钮的标题等;

另外我们看下notification类型的界面,分为静态的和动态的,静态是按照我们配置的内容提示的,而动态是根据app推送的消息显示的:

那么notification的界面运行原理为:


四、WatchKit简介
我们选中选中InterfaceController.m文件,会发现里面自动生成的方法和我们之前的UIViewController类似,如图分别可以看做UIViewController的init,viewDidLoad, viewWillAppear, viewDidUnload:

他们的运行原理也类似:

那么在WatchKit中大体上有哪些类呢?在官方文档中我们可以看到如下几个类及其介绍:

WatchKit刚刚兴起,还有很多需要完善和扩展,当前在Watch开发中用到的组件不多,主要有以下组件:

五、Watch的布局方式
下面简单介绍下Watch app组件的布局特点,他们的布局类似Android或网页的相对布局,分为:左中右、上中下的布局;

强行手动拖动组件的位置是没用的,必须在右侧进行位置的设置:

因为Watch app的界面布局都是storyboard布局的,所以一些组件和代码的关联就和以前用xib时一样了,不过这些控件生成的方法与之前有些不一样,比如按钮的方法是不带参数的,下面这些常用组件生成的方法:

网友评论