如需在 WatchKit 應(yīng)用中顯示一段文本,請(qǐng)使用標(biāo)簽對(duì)象。標(biāo)簽支持格式化文本,并且可以在運(yùn)行時(shí)用代碼改變文本內(nèi)容。
拖動(dòng)標(biāo)簽對(duì)象到對(duì)應(yīng)的 storyboard 場(chǎng)景中便可添加標(biāo)簽對(duì)象。然后便可設(shè)置標(biāo)簽的初始化的文本以及格式。WatchKit 同時(shí)支持標(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)信息,請(qǐng)參照 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)信息,請(qǐng)參照 信息屬性列表關(guān)鍵字參考。重要
為了能在運(yùn)行時(shí)用自定義字體創(chuàng)建相應(yīng)的字符串,你必須把自定義字體包含到你的 WatchKit 擴(kuò)展中。attributed string 發(fā)送到 Apple Watch 的時(shí)候,相應(yīng)的字體信息也包含在其中。你 WatchKit 應(yīng)用 bundle 中的自定義字體便可以對(duì)字符串進(jìn)行渲染。
使用自定義字體來格式化文本時(shí),需要?jiǎng)?chuàng)建一個(gè)包含字體信息的 attributed string 并把它設(shè)給標(biāo)簽,如代碼 8-1 所示。字體名稱和大小被編碼到 attributed string 中,然后會(huì)被用來更新 Apple Watch 上的標(biāo)簽.如果定義的字體名稱不符合系統(tǒng)字體或者你安裝的自定義字體的名稱,WatchKit 會(huì)自動(dòng)使用系統(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)簽對(duì)象
self.label.setAttributedText(attrString)
WatchKit 為獲取用戶文本輸入提供了一個(gè)標(biāo)準(zhǔn)的模式界面。界面允許用戶通過語音或者選擇標(biāo)準(zhǔn)短語以及表情等來進(jìn)行輸入。你可以通過調(diào)用當(dāng)前處于激活狀態(tài)的 Controller 的 presentTextInputControllerWithSuggestions:allowedInputMode:completion: 方法來顯示輸入界面.界面顯示時(shí),你可以指定輸入類型并且可以使用一個(gè)block來處理結(jié)果。你也可以指定一個(gè)或者多個(gè)初始化短語用來顯示在界面上,如圖 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)用戶選擇了某一項(xiàng)或者取消了輸入后,你的 block 會(huì)在主線程中執(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)境讓你可以僅使用一個(gè) storyboard 文件便能支持各種本地化語言。storyboard 使用的本地化字符串儲(chǔ)存在指定語言的字符串文件中。
對(duì)你的應(yīng)用進(jìn)行多語言化處理的時(shí)候,需要考慮的一個(gè)主要問題是安排好你的界面以使標(biāo)簽以及其他顯示文本的控件有足夠的顯示空間。比如,當(dāng)需要放置三個(gè)按鈕控件的時(shí)候,縱向擺放會(huì)比橫向擺放更妥當(dāng)。縱向擺放可以在文本變長(zhǎng)的時(shí)候提供更多的空間給按鈕。
更多關(guān)于應(yīng)用的多語言化,請(qǐng)參照多語言和本地化指南