鍍金池/ 教程/ iOS/ 文本與標(biāo)簽
上下文菜單
更新記錄
文本與標(biāo)簽
使用 iOS 技術(shù)
開發(fā)您的 Watch 應(yīng)用
Watch 應(yīng)用結(jié)構(gòu)
預(yù)覽概要
界面對象
UI 概要
Tables
配置 Xcode 項目
圖片
通知要點
設(shè)置
界面導(dǎo)航
管理你的預(yù)覽界面
管理自定義 Long Look 界面

文本與標(biāo)簽

如需在 WatchKit 應(yīng)用中顯示一段文本,請使用標(biāo)簽對象。標(biāo)簽支持格式化文本,并且可以在運行時用代碼改變文本內(nèi)容。

拖動標(biāo)簽對象到對應(yīng)的 storyboard 場景中便可添加標(biāo)簽對象。然后便可設(shè)置標(biāo)簽的初始化的文本以及格式。WatchKit 同時支持標(biāo)準(zhǔn)字體和自定義字體。圖 8-1 展示了標(biāo)準(zhǔn)字體風(fēng)格的使用。

圖 8-1 使用標(biāo)準(zhǔn)字體風(fēng)格的標(biāo)簽

http://wiki.jikexueyuan.com/project/apple-watch-programming-guide/images/text_styles_2x.png" alt="使用標(biāo)準(zhǔn)字體風(fēng)格的標(biāo)簽" />

更多的設(shè)置標(biāo)簽的相關(guān)信息,請參照 WKInterfaceLabel 類參考

使用字體

WatchKit 應(yīng)用,glance 界面以及通知界面使用標(biāo)準(zhǔn)字體來顯示文本。你應(yīng)用中的 Controller 可以使用自定義字體來顯示文本。(glance 和通知界面無法使用自定義字體)為了讓你的應(yīng)用使用自定義字體,你必須安裝相應(yīng)的字體,如下:

  • 把你的自定義字體文件包含到 WatchKit 應(yīng)用以及 WatchKit 擴展 Bundle里。
  • 給 WatchKit 應(yīng)用的 Info.plist 文件添加 UIAppFonts 關(guān)鍵字并指向你添加的自定義字體。更多關(guān)于 UIAppFonts 關(guān)鍵字的相關(guān)信息,請參照 信息屬性列表關(guān)鍵字參考。

重要
為了能在運行時用自定義字體創(chuàng)建相應(yīng)的字符串,你必須把自定義字體包含到你的 WatchKit 擴展中。attributed string 發(fā)送到 Apple Watch 的時候,相應(yīng)的字體信息也包含在其中。你 WatchKit 應(yīng)用 bundle 中的自定義字體便可以對字符串進(jìn)行渲染。

使用自定義字體來格式化文本時,需要創(chuàng)建一個包含字體信息的 attributed string 并把它設(shè)給標(biāo)簽,如代碼 8-1 所示。字體名稱和大小被編碼到 attributed string 中,然后會被用來更新 Apple Watch 上的標(biāo)簽.如果定義的字體名稱不符合系統(tǒng)字體或者你安裝的自定義字體的名稱,WatchKit 會自動使用系統(tǒng)的字體。

代碼 8-1 在標(biāo)簽中使用自定義字體

//用自定義字體的信息設(shè)置 attributed string

let menloFont = UIFont(name: "Menlo", size: 12.0)!
var fontAttrs = [NSFontAttributeName : menloFont]
var attrString = NSAttributedString(string: "My Text", attributes: fontAttrs)

// 把文本設(shè)給標(biāo)簽對象
self.label.setAttributedText(attrString)

管理文件輸入

WatchKit 為獲取用戶文本輸入提供了一個標(biāo)準(zhǔn)的模式界面。界面允許用戶通過語音或者選擇標(biāo)準(zhǔn)短語以及表情等來進(jìn)行輸入。你可以通過調(diào)用當(dāng)前處于激活狀態(tài)的 Controller 的 presentTextInputControllerWithSuggestions:allowedInputMode:completion: 方法來顯示輸入界面.界面顯示時,你可以指定輸入類型并且可以使用一個block來處理結(jié)果。你也可以指定一個或者多個初始化短語用來顯示在界面上,如圖 8-2 所示。用戶可以從可用短語中選擇或者輸入其他短語。

圖 8-2 收集用戶的文本輸入

http://wiki.jikexueyuan.com/project/apple-watch-programming-guide/images/text_input_phrases_2x.png" alt="figure8-2" />

代碼 8-2 展示了如何配置文本輸入 Controller 并處理結(jié)果.在指定初始化短語和輸入模式后,Controller 以異步的方式加載。當(dāng)用戶選擇了某一項或者取消了輸入后,你的 block 會在主線程中執(zhí)行。使用 block 來獲取用戶選擇的文本或者表情圖片并且刷新你的應(yīng)用。

代碼 8-2

NSArray *initialPhrases = @[@"Ley's do lunch," @"Can we meet tomorrow?", @"When are you free?"];

[self presentTetxInputControllerWithSuggestions:initialPhrases allowedInputMode:WKTextInputModeAllwAnimatedEmoji completion:^(NSArray *results){
    if(results && results.count > 0){
        id aResult = [results objectAtInde:0];
        //使用字符串或者圖片
    }else{
        //用戶沒有選擇任何東西
     }
 }];

文本多語言化

WatchKit 可以使用與 iOS 應(yīng)用相同的方法來處理多語言環(huán)境。

  • 在 storyboards 和 xib 文件中使用 Xcode 的多語言環(huán)境支持。多語言環(huán)境讓你可以僅使用一個 storyboard 文件便能支持各種本地化語言。storyboard 使用的本地化字符串儲存在指定語言的字符串文件中。

  • 使用 NSLocalizedString 類的宏定義來動態(tài)獲取本地化字符串。
  • 使用 NSNumberFormatter 類可以通過用戶的時區(qū)和場景設(shè)置來格式化數(shù)值。
  • 使用 NSDateFormatter 類可以通過用戶的時區(qū)和場景設(shè)置來格式化時間和日期。

對你的應(yīng)用進(jìn)行多語言化處理的時候,需要考慮的一個主要問題是安排好你的界面以使標(biāo)簽以及其他顯示文本的控件有足夠的顯示空間。比如,當(dāng)需要放置三個按鈕控件的時候,縱向擺放會比橫向擺放更妥當(dāng)??v向擺放可以在文本變長的時候提供更多的空間給按鈕。

更多關(guān)于應(yīng)用的多語言化,請參照多語言和本地化指南