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系統開發大全
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