WatchKit編程指南:Watch Apps--文本、標籤以及圖片

來源:互聯網
上載者:User

標籤: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--文本、標籤以及圖片

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.