watchOS 开发 - 初体验(使用 IB 添加 Label)

版权声明:本文为博主原创文章,转载请附上本文链接地址。from : https://blog.csdn.net/lovechris00 https://blog.csdn.net/lovechris00/article/details/82718059


编译环境

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 相关视频教程


watchOS 的 SDK 们

列表内容


猜你喜欢

转载自blog.csdn.net/lovechris00/article/details/82718059