[譯]在Swift中編寫 watchOS 2 Hello World 程序

2023-05-11 10:31 更新

猛戳閱讀最終版@SwiftGG,最終版語句銜接更流暢,閱讀起來更易懂

過去的幾個月我一直保持著寫博客的習(xí)慣,但是現(xiàn)在我得專心工作了。最近在做一些 watchOS 2 相關(guān)的更新工作,而且我覺得如果出個系列教程會對大家很有幫助。而首要的事情就是我們需要知道如何開發(fā)第一個 watchOS 2 應(yīng)用。所以現(xiàn)在就來開發(fā)一個 watchOS 2 風(fēng)格的 “Hello World!“吧!

在教程開始前,我想告訴你們一些用 Swift 在 iOS、watchOS、tvOS 或者 OS X 上編程的知識,因此,如果你有想通過 Coding Explorer Blog 了解的任何話題,請通過 Twitter @CodingExplorer 或者 Contact Page 來提出你的建議。

創(chuàng)建你的 watchOS 2 應(yīng)用

打開 Xcode, 創(chuàng)建一個新項目,可以通過初始界面,也可以通過菜單(File → New → Project…)。然后,定位到 watchOS 部分并選擇 Application,現(xiàn)在界面看起來是這樣的:

這里寫圖片描述

因為只有“iOS App with WatchKit App“這一個選項,所以選中并點擊 next。到這一步,需要給應(yīng)用起個名字然后做幾個選擇來初始化項目。我們把應(yīng)用命名為“HelloWatch“。簡單起見,你可以把下方的 the Notification Scene、Glance Scene 等選項關(guān)閉。雖然它們很有用,但是在這個項目我們只需要生成一個簡單的“Hello World“應(yīng)用。當(dāng)然,你需要確保將 Language 選項設(shè)置為 “Swift“。

這里寫圖片描述

這個項目是不會生成 iOS 應(yīng)用的。如果你對在 iOS 上寫一個 Hello World 應(yīng)用感興趣,請參閱 Hello World! Your first iOS App in Swift。選擇項目的保存位置,現(xiàn)在我們就可以開始了。選中導(dǎo)航面板上 “HelloWatch WatchKit App“ 分組中的 Interface.storyboard。

這里寫圖片描述

這個文件就是 watchOS 應(yīng)用的界面文件。和 iOS “Hello World“應(yīng)用類似,我們在應(yīng)用中放置一個 label 和一個 button,然后點擊 button 會改變 label 的文本內(nèi)容。

所以我們從 Object Library 拖一個 label 和 button 到 storyboard 上,然后把 label 放置在 button 的上方:

這里寫圖片描述

這時 label 看起來會比較擁擠,所以我們通過設(shè)置 Width 為“Relative to Container“ ,并將其值設(shè)置為 1 的方式來把 label 的寬度設(shè)置為屏幕的寬度。這個值代表了和屏幕寬高的百分比,所以 1 就是 100%,0.5 就是 50% 等等。然后我們在垂直方向上也給它設(shè)置更多的空間,把 Height 設(shè)置為“Relative to Container“ 然后將其值設(shè)置為 0.25 (即屏幕高度的25%)。最后我們把 Text 設(shè)置為“App Loaded…“,如果你喜歡還可以將其設(shè)置為居中顯示。

這里寫圖片描述

給 watchOS UI 添加一些 Swift 代碼

UI 已經(jīng) OK 了。現(xiàn)在我們把它和代碼連接起來,然后讓 button 去做一些事情。最簡單的方式就是打開輔助編輯器。點擊右上方的斜 venn 圖標(biāo)即可:

這里寫圖片描述

如果需要操作空間大一點,你可以通過最右邊的按鈕(圖標(biāo)是右側(cè)包含長條的方框)關(guān)閉工具面板。

然后,從 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行代碼。我們調(diào)用了 WKInterfaceLabel 的 “setText“方法,然后把新的文本做為參數(shù)傳遞給它。在 iOS 中,我們通過一個叫“text“的屬性就可以輕松滴改變 label 的顯示內(nèi)容。但是在目前來說,watchOS 并沒有這樣一個屬性,而且我們甚至不能通過程序把文本內(nèi)容再讀出來,預(yù)計下一版本的 watchOS 會加入這個屬性,但是現(xiàn)在我們?nèi)匀恢荒苡谩皊etText“方法去設(shè)置文本內(nèi)容。

大功告成。如果你有 Apple Watch,你可以把你的手機連接到 Mac,然后安裝這個應(yīng)用到手機上,或者你也可以使用模擬器。在左上角選擇“HelloWatch WatchKit App“這個 target,然后選擇任意一個你想用的 Phone 和 Watch 模擬器(或者選擇具體的iPhone,如果你想在真機上測試的話)。然后點擊 play 按鈕就可以了。你可能需要多點擊“play“按鈕幾次(尤其當(dāng)你電腦沒有 SSD 的情況下,這可以減少加載模擬器的時間),最終你會見到下面的畫面:

這里寫圖片描述

然后當(dāng)你點擊 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()
    }


}

上面的大部分代碼都是模版自動生成的。

總結(jié)

文章中的代碼都是在 Xcode 7.1.1 中進行測試的。

這就是 watchOS 2 中“Hello World!“應(yīng)用了。你會發(fā)現(xiàn)這篇教程非常簡單,其實這是有意為之。接下來的教程會經(jīng)常引用這篇教程,這樣就可以避免重復(fù)制作 watchOS 應(yīng)用時前面的一些設(shè)置步驟。這個系列接下來的一些文章會更有趣一些,包括使用 WatchConnectivity 在 iOS 和 watchOS 2 應(yīng)用之間傳遞數(shù)據(jù),或者實現(xiàn)并發(fā)。敬請期待更多的 watchOS 和 Swift 教程!

希望這篇文章對你有用。如果你覺得有用,請不要猶豫,把它分享到你的 Twitter 或者你喜歡的社交媒體,每次分享都會很有用。當(dāng)然,如果你有任何問題,請馬上通過 Contact Page 或者 Twitter @CodingExplorer 聯(lián)系我,我會看看我能幫到什么。謝謝!

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號