2012-06-07 83 views
2

我使用Quartz在iOS上創建透明圖像。但是,此圖像在模擬器中顯示爲正確的透明度,但在設備上顯示爲白色背景。爲什麼透明圖像在設備上以白色背景顯示?

這裏是我使用此代碼:

+ (UIImage *)clearRect:(CGRect)rect inImage:(UIImage *)image { 
    if (UIGraphicsBeginImageContextWithOptions != NULL) 
     UIGraphicsBeginImageContextWithOptions([image size], NO, 0.0); 
    else 
     UIGraphicsBeginImageContext([image size]); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    [image drawInRect:CGRectMake(0.0, 0.0, [image size].width, [image size].height)]; 
    CGContextClearRect(context, rect); 
    UIImage *result = UIGraphicsGetImageFromCurrentImageContext(); 
    NSData *data= UIImagePNGRepresentation(result); 
    UIImage *img = [UIImage imageWithData:data]; 
    UIGraphicsEndImageContext(); 
    return img; 
} 

這是我所看到的設備:

White image instead of transparent

什麼可能我是做錯了什麼?

+1

我粘貼了你的代碼,在資源中插入了一張圖片,在iPad 2上運行它,將它保存爲png文件並在PS中打開。它是透明的。你似乎在做其他的事情。 –

+0

其在模擬器中顯示透明..但不顯示在設備中..順便說一句,謝謝.. – Mani

+0

我測試了你在設備上發佈的方法。它工作正常。您呈現方式肯定有問題。至於「如何在iOS中創建透明圖像」這個問題,答案已經是您發佈的代碼。您在設備上的應用中呈現的結果是什麼?你看到或沒有看到你在模擬器中做什麼? –

回答

0

鑑於該代碼在模擬器,而不是你的設備,你可能已經成爲受害者的cruftmonster描述如下:

http://weblog.bignerdranch.com/642-beware-the-cruftmonster/

你可能已經從您的Xcode項目中刪除一些舊文件但不是設備上的應用程序包。你最初是否用不透明的圖像進行測試?

不知道這是否是解決方案,但它肯定與您描述的症狀相符。

+0

我正在安裝新的和新鮮的代碼在設備..最近被刪除..但同樣的問題..但謝謝朋友.. – Mani

相關問題