作者:codingexplorer骡湖,原文鏈接,原文日期:2015-12-08
譯者:mmoaay伞访;校對:千葉知風乌奇;定稿:numbbbbb
過去的幾個月我一直保持著寫博客的習慣没讲,但是現(xiàn)在我得專心工作了。最近在做一些 watchOS 2 相關的更新工作华弓,我覺得如果出個系列教程會對大家很有幫助食零。首先我們需要學會開發(fā)第一個 watchOS 2 應用,所以下面來開發(fā)一個 watchOS 2 風格的 “Hello World!”吧寂屏!
在教程開始前贰谣,我準備介紹如何使用 Swift 在 iOS、watchOS迁霎、tvOS 和 OS X 上編程吱抚。此外,如果你想在本博客中學到其他知識考廉,請給 Twitter @CodingExplorer 或者 Contact Page 來提出建議秘豹。
創(chuàng)建你的 watchOS 2 應用
打開 Xcode,創(chuàng)建一個新項目昌粤〖热疲可以使用初始界面,也可以通過菜單(File → New → Project…)涮坐。然后凄贩,定位到 watchOS 部分并選擇 Application,現(xiàn)在界面看起來是這樣的:
因為只有 “iOS App with WatchKit App“ 這一個選項袱讹,所以選中并點擊 next疲扎。接著你需要給應用起個名字然后做幾個選擇來初始化項目。我們把應用命名為 “HelloWatch“捷雕。簡單起見椒丧,你可以把下方的 the Notification Scene、Glance Scene 等選項關閉救巷。雖然它們很有用壶熏,但是在這個項目中我們只需要生成一個簡單的 “Hello World“ 應用。當然浦译,你需要確保將 Language 選項設置為 “Swift“久橙。
這個項目是不會生成 iOS 應用的俄占。如果你想知道如何在 iOS 上寫一個 Hello World 應用,請閱讀 Hello World! Your first iOS App in Swift淆衷。
選擇好項目的保存位置,我們就可以開始編程了渤弛。選中導航面板中 “HelloWatch WatchKit App“ 分組中的 Interface.storyboard祝拯。
這個文件就是 watchOS 應用的界面文件。和 iOS “Hello World“ 應用類似她肯,我們在應用中放置一個 label 和一個 button佳头,點擊 button 會改變 label 的文本內(nèi)容。
我們從 Object Library 拖一個 label 和 button 到 storyboard 上晴氨,然后把 label 放置在 button 的上方:
這時 label 看起來會比較擁擠康嘉,我們設置 width 為 “Relative to Container“ ,并將其值設置為 1籽前,從而把 label 的寬度設置為屏幕的寬度亭珍。這個值代表了和屏幕寬高的百分比,所以 1 就是 100%枝哄,0.5 就是 50%肄梨,以此類推。我們在垂直方向上也給它更多的空間挠锥,把 Height 設置為“Relative to Container“ 然后將其值設置為 0.25 (即屏幕高度的 25%)众羡。最后我們把 Text 設置為 “App Loaded…“,如果你喜歡還可以將其設置為居中顯示蓖租。
給 watchOS UI 添加一些 Swift 代碼
UI 已經(jīng) OK 了×宦拢現(xiàn)在我們把它和代碼連接起來,然后讓 button 去做一些事情蓖宦。最簡單的方式就是打開輔助編輯器齐婴。點擊右上方的斜 venn 圖標即可:
如果需要更大的操作空間,可以點擊最右邊的按鈕(圖標是右側包含長條的方框)關閉工具面板球昨。
然后尔店,從 label 開始用 Ctrl+拖動或者右擊拖動的方式拉一條線到代碼中(根據(jù)慣例,一般是在類的頂部)主慰。然后就會彈出對話框讓你給 label 的 outlet 命名嚣州。我們把它叫做 “displayLabel“。按照慣例我仍然建議采用駱駝命名法來給它們(也包括所有的變量)命名共螺,以小寫字母開始该肴,接下來每個單詞的首字母大寫(因為我們不能在變量名中加空格,所以我們以這樣的方式來表明這是一個新的單詞)藐不。
接下來匀哄,我們對 button 做同樣的操作秦效。從 button 開始用 Ctrl + 拖動的方式拉一條線到代碼中(可以是類范圍內(nèi)的任意位置,據(jù)我所知涎嚼,除了放在 outlet 下方阱州,沒有其它特殊的慣例)然后創(chuàng)建一個 action。一定要確保連接的方式是 “action“法梯。如果你創(chuàng)建的是 outlet苔货,它可以讓你改變 button 本身的狀態(tài),比如它的文本立哑,但這不是我們在這里想做的事情:
再次確認這是一個 “Action“夜惭。它會創(chuàng)建一個叫 “buttonTapped“ 的方法,我們在這個方法里面寫我們的代碼铛绰。改變 WKInterfaceLabel 文本的代碼非常簡單诈茧,如下:
@IBAction func buttonTapped() {
displayLabel.setText("Hello World!")
}
我們的方法中間只有 1 行代碼。我們調用了 WKInterfaceLabel 的 “setText“ 方法捂掰,然后把新的文本做為參數(shù)傳遞給它敢会。在 iOS 中,我們通過一個叫“text“的屬性就可以輕松的改變 label 的顯示內(nèi)容尘颓。但是在目前來說走触,watchOS 并沒有這樣一個屬性,我們甚至無法在程序中讀取文本內(nèi)容疤苹,預計下一版本的 watchOS 會加入這個屬性互广,但是現(xiàn)在我們只能用 “setText“ 方法設置文本內(nèi)容。
大功告成卧土。如果你有 Apple Watch惫皱,可以把手機連接到 Mac,然后把這個應用安裝到手機上尤莺。你也可以使用模擬器旅敷。在左上角選擇 “HelloWatch WatchKit App“ 這個 target,然后選擇任意一個 iPhone 和 Watch 模擬器(或者選擇具體的 iPhone颤霎,如果你想在真機上測試)媳谁,然后點擊 play 按鈕。你可能需要多點擊幾次 “play“ 按鈕(如果你的電腦沒有 SSD 友酱,這可以減少加載模擬器的時間)晴音,最終你會見到下面的畫面:
點擊 button 之后就會看到:
完整起見,InterfaceController.swift 文件的所有代碼如下:
import WatchKit
import Foundation
class InterfaceController: WKInterfaceController {
@IBOutlet var displayLabel: WKInterfaceLabel!
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
// Configure interface objects here.
}
@IBAction func buttonTapped() {
displayLabel.setText("Hello World!")
}
override func willActivate() {
// This method is called when watch view controller is about to be visible to user
super.willActivate()
}
override func didDeactivate() {
// This method is called when watch view controller is no longer visible
super.didDeactivate()
}
}
上面的大部分代碼都是模版自動生成的缔杉。
總結
文章中的代碼都是在 Xcode 7.1.1 中進行測試的锤躁。
這就是 watchOS 2 中 “Hello World!“ 應用。你會發(fā)現(xiàn)這篇教程非常簡單或详,其實這是有意為之系羞。接下來的教程會經(jīng)常引用這篇教程郭计,這樣就可以避免重復 watchOS 應用的設置步驟。這個系列接下來的文章會更有趣椒振,包括使用 WatchConnectivity 在 iOS 和 watchOS 2 應用之間傳遞數(shù)據(jù)以及并發(fā)實現(xiàn)昭伸。敬請期待更多的 watchOS 和 Swift 教程!
希望這篇文章對你有用杠人。如果你覺得有用勋乾,請不要猶豫,把它分享到你的 Twitter 或者你喜歡的社交媒體嗡善,每次分享對我來說都很有用。當然学歧,如果你有任何問題罩引,請馬上通過 Contact Page 或者 Twitter @CodingExplorer 聯(lián)系我,我會盡我所能幫助你枝笨。謝謝袁铐!
本文由 SwiftGG 翻譯組翻譯,已經(jīng)獲得作者翻譯授權横浑,最新文章請訪問 http://swift.gg剔桨。