如果未通過imageNamed加載,@ 2x圖像的尺寸始終是非視網膜圖像尺寸的兩倍。
創建的圖像,像這樣在視網膜上的和非視網膜設備:
UIImage *anImage = [UIImage imageNamed: @"anImageName"];
NSLog(@"%@: scale: %f", NSStringFromCGSize(anImage.size), anImage.scale);
印刷視網膜設備上的CGSize對象將非視網膜圖像的大小相同,但將有刻度設置爲2.0。
使用明確的視網膜後綴創建圖像將顯示圖像實際上是圖像的兩倍 - 因此imageNamed會自行縮放圖像。
對於想要在已經創建和尺寸的圖像視圖中顯示的情況,您仍然不需要執行任何操作 - 只需將其直接裝入,圖像視圖將圖像調整爲正確的尺寸。
但是,如果您要創建一個新的圖像視圖,那麼您需要創建一個注意UIScreen分辨率的框架,如此(不幸的是,您不能將scale屬性設置爲只讀):
CGRect newFrame = CGRectZero;
newFrame.size.width = (anImage.size.width/[UIScreen mainScreen].scale);
newFrame.size.height = (anImage.size.height/[UIScreen mainScreen].scale);
這假設您的網絡服務意識到設備的屏幕是否是視網膜;有些服務會自動檢測,有些服務會要求您事先告訴他們。因人而異。
首先你應該建立一個通用的測量單位。不要使用點和像素,因爲您會感到困惑,1點與2像素不相等。 – danypata
使用scale = 2使用'+ [imageWithCGImage:scale:orientation:]' – Mar0ux
@danypata然後我應該用什麼來引用設備中的大小?我的理解是,對於視網膜設備1x1點== 2x2像素 – harinsa