怎樣在Xcode 6中使用向量圖形

發表於2014-12-30

iOS應用的視覺形式通常是以圖形元素驅動的。在設計開發一款應用時,你需要不同規格的應用圖示,例如不同尺寸的Default.png圖片,同時還需要為UI的實現準備@1x和@2x圖形資源。所有這些圖形元素都會讓你的產品看上去更吸引人,但弊端也是很明顯的 – 你需要為每種規格的圖形元素單獨切圖。而隨著iPhone 6及Plus的釋出,我們又多了一套@3x需要處理,事情變得越來越複雜。

幸運的是,蘋果在Xcode 6當中給我們帶來了一些很棒的工具用以管理圖形資源。更棒的是,新的工具和實現方式可以幫我們從容的應對未來的iOS裝置,例如基於Storyboard為iOS 8裝置生成啟動圖片,這樣你就無需再為不同的裝置型別單獨製作。此外還有一個非常重要的新功能,就是在應用構建階段基於PDF圖片檔案自動生成各種規格的圖形資源。本文中,我們就來一起探索一下這種能幫你節省大量時間成本的方法。

WWDC的“Interface Builder新功能”當中,我們可以看到關於怎樣在Xcode當中基於向量化的PDF檔案生成PNG圖片的簡短演示。下面我們來詳細看一下。

第一步:使用Illustrator生成PDF向量圖形

首先,我們需要PDF格式的向量圖形。你可以使用Adobe Illustrator或你所熟悉的其他向量圖形工具來生成;@1x規格的即可。

如果你使用Illustrator:

  1. 為即將匯出的圖形元素建立新文件,使用@1x規格來設定文件的尺寸。
  2. 將需要匯出的圖形元素複製到新文件當中。
  3. 在“File”選單中選擇“Save”。
  4. 在儲存時記得取消勾選“Preserve Illustrator Editing Capabilities”。

由此匯出的PDF是可拉伸的向量圖形,可以在iOS中被完美的處理為@2x和@3x規格。下一步,我們看看怎樣在Xcode當中進行設定。

第二步:在Xcode專案檔案中進行設定

要使用向量化的圖形資源,你需要在Xcode當中通過Asset Catalog來管理圖片。不用擔心,你仍可以將標準的圖形匯入方式與XCAssets混合起來使用,不會產生問題。執行以下步驟:

  1. 如果還沒有XCAsset檔案,那麼建立一個。如果已經建立過,就在專案中開啟。
  2. 在“Editor”選單中選擇“New Image Set”。
  3. 在新建立的圖片集中,選擇空的圖片集,然後開啟Utilities皮膚。
  4. 選擇屬性檢查器Attributes Inspector。
  5. 在型別下拉選單中,選擇“Vectors”。
  6. 圖片集會變為只有一個拖放點的“All – Universal”。
  7. 將你的PDF向量圖形拖放到圖片集當中。

接下來,你可以像以往一樣使用Image Catalog中的圖形資源,通過程式碼或Interface Builder均可。例如在程式碼中使用“imageNamed:”+圖片集名稱的字串。

第3步:見證神奇時刻

Xcode在構建專案時會基於Asset Catalog中的PDF向量圖形自動建立@1x、@2x和@3x三種規格的PNG檔案。舉例說,你為Xcode提供了一個@1x規格的,尺寸為150px*150px的PDF檔案,那麼Xcode會自動建立下列PNG圖形:

  • @1x規格,尺寸為150px*150px
  • @2x規格,尺寸為300px*300px
  • @3x規格,尺寸為450px*450px

應用執行時,iOS會根據不同的裝置型別從上面三種圖形資源中挑選出恰當的規格進行輸出。另外記得為AutoLayout設定好約束,確保圖形不會在大尺寸裝置上被拉伸。Xcode所做的是基於PDF向量圖形建立PNG檔案;應用執行時所輸出的仍然是柵格化的圖片,而非可以自動伸縮的向量圖形。

注意

  • 向量圖形的支援只是階段性的 – 在構建階段,Xcode會基於PDF生成PNG圖片並輸出到介面當中。
  • 一旦完成向量圖形的設定,你就無法為其指定新的輸出尺寸了。如果需要更大的規格,則需要建立新的PDF圖形,否則在使用AutoLayout時原來的圖片會失真。
  • 正如前面所說的,iOS 8只能支援基於PDF生成的PNG檔案;但OS X卻可以真正完整的支援向量圖形,你可以直接通過Auto Layout或程式碼來縮放向量圖形,不會產生任何失真。
  • 這種方式無法相容iOS 7之前的系統,因為相關的圖形資源都是通過Asset Catalog管理的。
  • 如果你已經使用了類似的指令碼或工具來自動生成多種規格的圖形資源,那麼這種方式不會給你帶來太多用處。不過,如果你的應用同時擁有OS X和iOS兩種版本,並且會用到一些相同的圖形,那麼這種方法將會是事半功倍的。

更多資訊和資源

 

 

 

相關文章