[英]Retina display and [UIImage initWithData]
我需要從服務器下載的原始數據初始化圖像,該服務器根據iPhone客戶端的類型提供正確的圖像大小。
我知道我應該在640x960顯示器上將比例值設置為2.0,但這是一個只讀屬性,並且在初始化時使用initWithData時無法設置。
有任何想法嗎?
我不知道你可以嵌入到圖像數據中的任何東西,告訴手機它是一個@ 2x圖像,但這樣的東西應該有效:
UIImage * img = ...;
img = [UIImage imageWithCGImage:img.CGImage scale:2 orientation:img.imageOrientation];
由於iOS 6.0 UIImage
有方法+ imageWithData:scale:
你可以傳遞2.0
作為視網膜的比例。
您可以將[[UIScreen mainScreen] scale]
作為scale參數而不是2.0f
。
Swift3,4版本
let image = UIImage(data: imageData, scale: UIScreen.main.scale)
如果你想要或在導入的類上放入你的.m(調用函數IMAO時c的語法更好)
BOOL isRetina(){
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
return [[UIScreen mainScreen] scale] == 2.0;
}
return NO;
}
然后在使用服務器數據創建映像時:
[UIImage imageWithData:dataFromServer scale:isRetina()?2:1];
AFAIK您不需要自己設置比例值。 操作系統將為您處理點到像素的轉換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.