標籤:des style http io ar os 使用 sp for
本章節由CocoaChina翻譯群組成員dada(github首頁)翻譯自WatchKit Programming Guide:Watch Apps--Text and Labels、Watch Apps--Images敬請勘誤。
文本和分類標籤
為了在Watch app中展示文本,使用標籤對象。分類標籤支援格式化的文本,可以在運行時被程式修改。
要添加標籤到介面控制器,可以把它拖到對應的故事版情境(storyboard),在這裡指定標籤的初始文本字串和格式。WatchKit既支援標準的字型也可以自訂字型。圖8-1展示了你可以使用的標準字型風格。
圖8-1標籤的標準字型風格
更多關於配置標籤對象的資訊,請查閱 WKInterfaceLabel Class Reference。
Using Custom Fonts 使用自訂字型
除了標準字型風格,你可以定製經過格式化的字串的字型。按照下面的方式來定製字型:
· 在Watch app和WatchKit擴充包中都匯入定製的字型檔。
· 添加__UIAppFonts__鍵到你的Watch app中的Info.plist檔案中,並用這個來指定添加到包中的字型。更多關於此鍵的資訊,請查閱 Information Property List Key Reference
注意:你必須在WatchKit擴充中匯入字型,才能在運行時建立指定字型的字串。當發送到Apple Watch的時候,字型的資訊包含了屬性字串,在Watch app包中的字型拷貝將會渲染這個字型。
使用自訂字型來格式化文本,使用字型資訊來建立一個屬性化字串,並使用這個字串來作為你標籤的文本,就像Listing 8-1中展示的那樣。字型的名字和尺寸由屬性字串編碼而成,這樣就可以用來更新使用者Apple Watch的標籤了。
使用自訂的字型作為標籤的字串
| 12345678 |
// Configure an attributed string with custom font information. UIFont* menloFont = [UIFont fontWithName:@"Menlo" size:12.0]; NSAttributedString *attrString = [[NSAttributedString alloc] initWithString:@"My Formatted Text" attributes:@{NSFontAttributeName: menloFont}]; // Set the text on the label object. [self.myCustomFontLabel setAttributedText:attrString]; |
Customizing the System Font 配置系統字型
配置系統字型,使用UIFontDescriptor對象來指定基於系統的新字型。列表 8-2 的例子展示了怎樣讓定製只使用小寫字元的標準的系統字型。在轉換系統字型到一個字型描述符後, 添加__kLowerCaseType__和__kLowerCaseSmallCapsSelector__屬性(在Core Text framework中定義)然後字型描述符的結果來建立新的字型對象。
指定系統字型為小寫
| 12345678910 |
CGFloat fontSize = 18.0; UIFont *afont = [UIFont systemFontOfSize:fontSize]; UIFontDescriptor *fontDescriptor = [[afont fontDescriptor] fontDescriptorByAddingAttributes:@{ UIFontDescriptorFeatureSettingsAttribute : @[ @{ UIFontFeatureTypeIdentifierKey : @(kLowerCaseType), UIFontFeatureSelectorIdentifierKey : @(kLowerCaseSmallCapsSelector) },], }]; UIFont *smallCapFont = [UIFont fontWithDescriptor:fontDescriptor size:fontSize]; |
國際化您的文本代碼
Watch apps能使用iOS apps想通的國際化技術方法。
· 使用基於Xcode國際化支援的storyboard和xib檔案。基於國際化可以讓你僅僅只用一個storyboad檔案就能支援所有的本地化。本地化字串分別存在特定的地區語言字串中。
· 使用NSLocalizedString族的宏定義來讓程式自動檢索本地化字串。
· 通過NSNumberFormatter類使用使用者所在地區和本地的設定來格式化數值型的值。
· 通過NSDateFormatter類使用使用者所在地區和本地設定來格式化時間。
當要國際化你的應用,你主要考慮的是如何調整介面,讓標籤列表(還有其他文本的控制)能夠足夠容納得下。比如,比起水平的排列三個按鈕,垂直排列更好能給每一個標籤的文本提供更長的容納空間。
更多關於國際化的資訊,請查閱Internationalization and Localization Guide。
----------------------------------------------------------------------------------------------------------
映像
WatchKit(蘋果手錶開發套件)提供下列方法將圖片添加到你的內容裡:
· WKInterfaceImage用於展示單個的圖片或者一組圖片作為單個映像展示的內容。
· WKInterfaceGroup、WKInterfaceButton和WKInterfaceController類允許你指定一張圖作為某些內容的背景圖。
指定你的映像資源
下面是當你建立映像資源時要注意的準則:
· 盡量只用PNG的格式的圖。
· 保證建立的映像的尺寸是符合你的介面的。對於你不好控制的映像,使用setWidth:和setHeight:方法來做自適應。
使用命名的圖片來提高執行效率
下面是幾種更換介面對象現有圖片的方式:
· 使用 setImageNamed: 或 setBackgroundImageNamed:方法來分配一個已經存在於Watch app資源套件裡,或者是正在裝置緩衝中的映像。
· 使用WatchKit的setImage:、setImageData:、setBackgroundImage:或setBackgroundImageData:方法無線傳輸映像資料來擴充你的Watch app。
用命名指定映像的好處是這些圖不需要再從使用者的iphone中無線傳輸到手錶。當你指定了圖片的命名,WatchKit只發送名稱字串到你的Watch app中,這樣減少了時間和功耗。這個字串用來檢索Watch app包中的映像,或者從圖片緩衝中去取得。
任何時候你在你的擴充中建立的__UIImage__對象,必須要先將存在於使用者的iPhone上的映像對象發送到Apple Watch上才能使用。甚至使用__UIImage__的 imageNamed:方法來載入你的WatchKit擴充包資源,也不是從Watch app中得到的。
在裝置上緩衝映像
如果你頻繁使用在你WatchKit擴充中建立的映像,可以把它們緩衝到裝置裡,然後通過名稱來引用。你必須在調用它們之前先緩衝圖片,使用__WKInterfaceDevice__的addCachedImage:name:或addCachedImageWithData:name:方法。
使用緩衝圖片需要注意以下兩點:
· 對於WKInterfaceImage對象,調用__setImageNamed: __方法,指定緩衝映像的名稱。
· 對於WKInterfaceGroup和WKInterfaceButton對象,調用__setBackgroundImageNamed:__方法,指定緩衝中的名稱
Apple Watch映像的緩衝是限制尺寸的,每個app大概可獲得20MB的緩衝空間。緩衝是持久的並可以在啟動的Watch app之間使用。當你達到最大緩衝時,WachKit會丟棄比較老的映像,把空間讓給新分配的映像。
WatchKit編程指南:Watch Apps--文本、標籤以及圖片