比方以上這張百吻巴黎楊雅晴 kiss圖片,我們只要分別將低解析度的kiss.jpg和高解度的kiss@2x.jpg加入專案,當以[UIImage imageNamed:@"kiss.jpg"]建立image物件時,若iPhone本身具有retina螢幕,系統即會聰明地採用@2x結尾的圖片。
不過若是我們將高解度的圖片加入專案,但卻忘了於檔名裡加上@2x,將讓系統產生嚴重的誤解。
如上圖所示,圖片裡的帥哥美女都只露出了半張臉,仿佛古時候的猶抱琵琶半遮面。
造成圖片無法完整顯示其實真的不太容易,需要同時滿足以下三點:
1.將UIImageView物件的contentMode設為UIViewContentModeTop
2.高解析度的圖片檔名忘了補上@2x3.具有retina能力的螢幕
這是因為當有加上@2x時,若圖片原來是200 * 200 (pixel),系統會將它除以2,設定圖片的大小為100*100 (point)。但若我們不幸忘了加上@2x,系統將不幸地把圖片的大小設為200 * 200 (point),而在retina螢幕上,200 * 200 (point) 等同於 400 * 400 (pixel),所以圖片被放大,幸福的kiss也就只露出了一半。
另外有一點值得注意的,如果利用initWithContentsOfFile建立UIImage物件,此時傳入的path可以為沒有@2x的圖檔路徑,當螢幕為retina時,系統同樣會聰明地找尋@2x的檔案 。但若只有@2x的檔案,但卻沒有低解析度的普通檔案,此時利用NSBundle的pathForResource取得的路徑將是空的,造成找不到檔案,無法建立UIImage物件。
沒有留言:
張貼留言