簡體   English   中英

Retina顯示和[UIImage initWithData]

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM