文章目录
编译环境
xcode 9.3
watchOS 4.3
写于2018年9月15日
一、创建项目
使用xcode 创建 project,选到watchOS 页,第一个就是
创建成功后,会发现project 有三部分,targets 中包含了 iOS app 之外两个 target;
这两个target的bundleID后缀,在 iOS App bundleID 后面分别增加了:
.watchkitapp
.watchkitapp.watchkitextension
这一堆文件还是让人摸不着头脑,只能慢慢尝试吧。
一些资料中如此说:苹果将 Watch App作为iOS App的延伸和拓展
- Watch App 部分位于用户的Apple Watch上,它目前为止只允许包含Storyboard文件和Resources文件。在我们的项目里,这一部分不包括任何代码。
- WatchKit Extension 部分位于用户的iPhone安装的对应App上,这里包括我们需要实现的代码逻辑和其他资源文件。
运行时,可选中 Watchkit App 来运行。
然后会出现表盘和 iPhone模拟器
二、查看表盘,添加label
可以发现Storyboard中包含三块表盘,Interface Controller、Static Interface、Dynamic Interface。
先直接从右侧拉取label 到这三个表盘上
拖拽的时候,可以感觉到,这个label 好像被拖到一个列表上,是有序的排列;
可以放大label,但无法任意放置 label 的位置。
运行,可以发现显示的label 是最上方那块;
三、连线
选中label,点击右上角按钮,右侧出现关联的代码文件;
拖拽label 到 Interfacecontroller.m 中
修改lebel 内容,再次运行,可以发现效果如下:
四、InterfaceController
可以把InterfaceController 理解为 UIViewController
但与UIViewController的区别是:
- InterfaceController最终继承的是NSObject;
- InterfaceController不会管理Watch APP的应用界面;
- Watch APP的界面是直接由Watch Kit来管理;
创建项目后,这个文件会自动产生三个方法:
- awakeWithContext
- willActivate
- didDeactivate
对 awakeWithContext 打断点,会发现,运行项目并不会立即调用到 awakeWithContext,一般需要等上几秒;
apple Watch启动原理
用户点击Watch APP后,与Watch匹配的iPhone会启动extension,然后与Watch建立连接,产生通信
五、问题
如何用纯代码添加 label 呢?
可以发现跟iOS、macOS 不一样的是,这个controller 没有 view;
label 也不能设置frame;
在 github 上搜索 WKInterfaceLabel 也没有纯代码构建的;
那么如何纯码添加呢?
六、参考:
-
枣泥布丁:WatchOS系统开发大全
http://www.cocoachina.com/ios/20170728/20052.html?utm_source=itdadao&utm_medium=referral -
夜幕下的超人:watchOS开发—初步认识
https://www.cnblogs.com/zengshuilin/p/5791263.html -
更多watchOS 项目:
https://www.cocoacontrols.com/controls?language=1-objective-c&platform_id=watchos
https://github.com/search?q=watchos
七、watchOS 相关视频教程
-
iOS-健康App系列之迈出你的第一步(OC)
https://www.imooc.com/learn/511 -
一起来做价值百万的Apple Watch App:分歧终端机 (Swift)
https://www.imooc.com/learn/242