如需在 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)的字體,如下:
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 使用的本地化字符串儲存在指定語言的字符串文件中。
對你的應(yīng)用進(jìn)行多語言化處理的時候,需要考慮的一個主要問題是安排好你的界面以使標(biāo)簽以及其他顯示文本的控件有足夠的顯示空間。比如,當(dāng)需要放置三個按鈕控件的時候,縱向擺放會比橫向擺放更妥當(dāng)??v向擺放可以在文本變長的時候提供更多的空間給按鈕。
更多關(guān)于應(yīng)用的多語言化,請參照多語言和本地化指南