iOS7 Day-by-Day :: Day2 :: Asset Catalog
原文:http://www.shinobicontrols.com/blog/posts/2013/09/23/ios7-day-by-day-day-2-asset-catalog
介紹
在以前我們總是要花時間來擺弄Xcode工程中組織的圖片資源—從來不確定我們是否拿到了所有圖片的視網膜屏的版本,或者是否拿到了我們需要的所有不同版本的圖標。在以前這充其量就是互不相交的處理過程,但是對於Xcode5和iOS7蘋果介紹了資源目錄這個新概念,它同時組織了物理圖片文件還有與它們有關的上下文信息。
資源目錄
一個資源目錄包含了所有圖片、應用圖標、啓動畫面和XCode創建的。當在Xcode5中創建了一個新工程時一個資源目錄也將被創建,叫做Images,將用來準備放應用的圖標和啓動畫面。XCode提供了工具將以前的應用轉移到使用資源目錄上。
在iOS7中目錄會被編譯成優化過的二進制文件形式來減少編譯完成後的應用的大小。
資源目錄是一個由Xcode管理的磁盤上的文件目錄。資源目錄以一種特別的方式被組織,並且包含了一個json文件來存儲與目錄相關的元數據。
應用圖標與啓動圖片
Xcode自動創建的資源目錄叫作Images.xcassets並且包含全部的應用圖標和啓動圖片。每一個圖片都有適合你工程的部署對象的位置,並且包含了需要的大小:
僅僅拖拽圖片從Finder中到Finder中的資源目錄管理器中,就會將圖片放到了資源目錄裏。如果你提供了一個大小不正確的圖片,那麼Xcode就會產生警告。
普通的圖片集
和標準的集合一樣,你可以使用資源目錄來管理你自己的圖片。圖片被包含在一個圖片集中,具有一個同一圖片的視網膜屏和非視網膜屏版本的參考
在Xcode中創建一個圖片集完成了,並且你可以在文件夾中組織這個圖片集以便容易導航。使用存放在資源目錄中的圖片和使用UIImage:imageNamed:一樣簡單:
UIImage *image = [UIImage imageNamed:@“Australia"];
圖片切片
資源目錄的另一個主要功能是做圖片切片。以這種方式重新調整了大小創建的圖片自從iOS2就已經適用了,但是Xcode新增的這個功能這樣做變得非常的簡單。
使用切片改變圖片的大小對於創建像按鈕這樣的可視化元素是一種很常見的方式—圖片的中間應該被拉伸或平鋪來使用新的大小,邊緣應該在一個方向拉伸並且四角應該保留原有的大小。
對於資源目錄中的圖片集切片也是適用的—點擊“Show Slicing”按鈕(在界面的右下角或者在菜單欄的Editor中)就可以了。你可以選擇水平、垂直或者兩個方向的縮放方向。你的圖片將會按照指引的那樣被覆蓋,固定四角並且調整中間部分的大小。
使用這些切片圖片非常的容易—只要像之前一樣創建一個UIImage,當你改變由於展示他的UIImageView的大小時,圖片將作爲位每個切片重新縮放。
UIImage *btnImage = [UIImage imageNamed:@"ButtonSlice"];
// Let's make 2
UIImageView *iv = [[UIImageView alloc] initWithImage:btnImage];
iv.bounds = CGRectMake(0,0,150, CGRectGetHeight(iv.bounds));
iv.center = CGPointMake(CGRectGetWidth(self.view.bounds) / 2,300);
[self.view addSubview:iv];
// And a stretched version
iv = [[UIImageView alloc] initWithImage:btnImage];
iv.bounds = CGRectMake(0,0,300, CGRectGetHeight(iv.bounds));
iv.center = CGPointMake(CGRectGetWidth(self.view.bounds) / 2,350);
[self.view addSubview:iv];
總結
對於iOS開發工具包來說資源目錄並不是一個非常突出的新功能,但是它們確實減少了一些開發中煩瑣的事情。對於XCode5創建的項目資源目錄是可用的,並且將會使資源管理是一件不是很艱苦的事情。
不要忘記了你可以在github上得到這個項目的代碼 github.com/ShinobiControls/iOS7-day-by-day。