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;
}

これは私がデバイスで見ているものです:

透明ではなく白い画像

私は何が間違っているのでしょうか?

4

1 に答える 1

0

コードがデバイスではなくシミュレータで機能することを考えると、以下に説明する cruftmonster の犠牲になった可能性があります。

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

Xcode プロジェクトからは削除されたものの、デバイスのアプリケーション バンドルでは削除されていないレガシー ファイルがいくつかある場合があります。最初に不透明な画像でテストしましたか?

これが解決策かどうかはわかりませんが、あなたが説明した症状と一致することは確かです。

于 2012-06-08T15:52:00.630 に答える