1. 程式人生 > >watchOS 開發 - 初體驗(使用 IB 新增 Label)

watchOS 開發 - 初體驗(使用 IB 新增 Label)


編譯環境

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 們

列表內容