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

2023-05-11 10:31 更新

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

過去的幾個(gè)月我一直保持著寫博客的習(xí)慣,但是現(xiàn)在我得專心工作了。最近在做一些 watchOS 2 相關(guān)的更新工作,而且我覺得如果出個(gè)系列教程會對大家很有幫助。而首要的事情就是我們需要知道如何開發(fā)第一個(gè) watchOS 2 應(yīng)用。所以現(xiàn)在就來開發(fā)一個(gè) 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)建一個(gè)新項(xiàng)目,可以通過初始界面,也可以通過菜單(File → New → Project…)。然后,定位到 watchOS 部分并選擇 Application,現(xiàn)在界面看起來是這樣的:

這里寫圖片描述

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

這里寫圖片描述

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

這里寫圖片描述

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

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

這里寫圖片描述

這時(shí) label 看起來會比較擁擠,所以我們通過設(shè)置 Width 為“Relative to Container“ ,并將其值設(shè)置為 1 的方式來把 label 的寬度設(shè)置為屏幕的寬度。這個(gè)值代表了和屏幕寬高的百分比,所以 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 去做一些事情。最簡單的方式就是打開輔助編輯器。點(diǎn)擊右上方的斜 venn 圖標(biāo)即可:

這里寫圖片描述

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

然后,從 label 開始用 Ctrl+拖動(dòng)或者右擊拖動(dòng)的方式拉一條線到代碼中(根據(jù)慣例,一般是在類的頂部)。然后就會彈出對話框讓你給 label 的 outlet 命名。我們把它叫做 “displayLabel“。按照慣例我仍然建議采用駱駝命名法來給它們(也包括所有的變量)命名,以小寫字母開始,然后接下來的每個(gè)單詞的首字母都大寫(因?yàn)槲覀儾荒茉谧兞棵屑涌崭瘢晕覀円赃@樣的方式來表明這是一個(gè)新的單詞)。

這里寫圖片描述

接下來,我們對 button 做同樣的操作。從 button 開始用 Ctrl + 拖動(dòng)的方式拉一條線到代碼中(可以是類范圍內(nèi)的任意位置,據(jù)我所知,除了放在 outlet 下方,沒有其它特殊的慣例)然后創(chuàng)建一個(gè) action。一定要確保連接的方式是 “action“。如果你創(chuàng)建的是 outlet,它可以讓你改變 button 本身的狀態(tài),比如它的文本,但這不是我們在這里想做的事情:

這里寫圖片描述

再次確認(rèn)這是一個(gè) “Action“。它會創(chuàng)建一個(gè)叫 “buttonTapped“的方法,我們在這個(gè)方法里面寫我們的代碼。改變 WKInterfaceLabel 文本的代碼非常簡單,如下:

@IBAction func buttonTapped() {
    displayLabel.setText("Hello World!")
}

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

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

這里寫圖片描述

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


}

上面的大部分代碼都是模版自動(dòng)生成的。

總結(jié)

文章中的代碼都是在 Xcode 7.1.1 中進(jìn)行測試的。

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

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號