標籤:
iOS 我所知道的Assets.xcassets字數923 閱讀723 評論1 喜歡3
Assets.xcassets是用來存放映像資源檔的。將一個圖片放在Assets裡面是這個樣子的
目錄結構Image Set
Image Set映像集,下面有個Name,這個Name並不是指圖片的名字而是指像集的名字。什麼意思?上個圖說明一下,
Image Set
[UIImage imageNamed:@"xxx"]通常這裡xxx就是相集的名字,在相集裡面放兩張不一樣的@2x和@3x圖片,在iPhone6和iPhone6 Plus載入出來的會不一樣。
兩個完全不一樣的圖片Devices
Devices下面有很多設定具體效果可以參見demo請戳這裡下載
1、設定相同的相集下面的顯示不同的圖片。比如一個APP是適配iPhone和iPad,在iPhone上顯示A圖片,在iPad上顯示B圖片,勾選上iPhone和iPad那麼可以對iPhone和iPad單獨設定圖片
不同裝置不同圖片
2、根據sizeClass設定圖片,比如6Plus在橫屏的時候顯示A圖片,在豎屏的時候顯示B圖片那麼久可以設定Devices下面的 Width 和 Height
不同size不同圖片
3、Memory和Graphics雖然我很想寫,但是我真的不知道。還沒用到過。希望知道的小夥伴可以留言告訴我。
4、 Scale Factors 可設定向量圖(Singele Vector)和位元影像(Vector wiht Overrides)
我們知道xcode可以放PDF格式的圖片代替@2x,@3x圖片,這樣即使放大也不會失真
設定PDF向量圖片
5、 Render As 預設是Default還有兩個分別是Oriminal Image(始終繪製圖片原始狀態,不使用Tint Color)Template Image(始終根據Tint Color繪製圖片,忽略圖片的顏色資訊)
比如設定UITabBarItem中的圖片的時候,預設情況下回對圖片進行渲染成藍色,(具體可以參照demo的第一個UITabBarItem),這個時候我們需要回複圖片本來的顏色,這是圖片的渲染為Oriminal Image就行了。
如果用代碼實現的話,是這樣
[[UITabBarItem alloc] initWithTitle:tittle image:[[UIImage imageNamed:@"image"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] selectedImage:[[UIImage imageNamed:@"selectedImage"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
Image
圖片的資訊比如 檔案名稱(File Name) 大小(Size)等等上面設定的資訊
Slicing
這個是用來設定圖片的展開的。例如QQ聊天的氣泡,四個角不被展開,中間的可以展開。如果用代碼實現的話,可以參考MJ的部落格。在Assets.xcassets怎麼實現呢?
QQ20160409-0.png
開始展開
選擇展開方向
拖動圖片上的三根線,Slicing的值會跟著改變,在左側線和中間線之間的像素會在展開時被填充,在中間線和右側線之間的像素將被隱藏。在上側線和中間線之間的像素會在展開時被填充,在中間線和下側線之間的像素將被隱藏。
展開參數
不被展開的地區總結:
如果圖片存放在assets資源管理員,最終裡面所以的圖片會被打包成Assets.car(用ThemeEngine可以把圖片弄出來),其作用在於
1、 自動識別@2x,@3x圖片,
2、 根據不同的裝置,不同的解析度設定相應的圖片。
3、 可以對圖片進行剪裁和展開處理
在.car中的圖片是不能通過imageWithContentsOfFile:來載入
imageName:載入的圖片要麼是Assets.car中的圖片,要麼是資源套件(mainBundle)中直接存放的圖片。如果用imageNamed:從Images.xcassets以外的地方載入圖片,必須在檔案名稱後加副檔名,例如:
UIImage *image=[UIImage imageNamed:@"plus.png"];
demo下載
ios appIcon配置