2016-12-14 18 views
1

iOS 10を実行しているiPhone 7を使用しています(iOS 10のバージョンは問題ありませんが、iPhone 7デバイスでなければなりません...同じバージョンのiOS 10を搭載したiPhone 6でもこの問題は発生しません)。残念ながら、iOS 9以降を実行しているiPhone 7を試すことはできません。私のアプリでXcode 8 CoreGraphicsのiPhone 7(iOS 10を実行中)の問題

、私は別の画像でイメージをマスクするために、このメソッドを使用しています:

- (UIImage *)imageWithMask:(UIImage *)maskImage 
{ 
    UIImage *returnImage = nil; 

    CGImageRef maskRef = maskImage.CGImage; 
    CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef), 
             CGImageGetHeight(maskRef), 
             CGImageGetBitsPerComponent(maskRef), 
             CGImageGetBitsPerPixel(maskRef), 
             CGImageGetBytesPerRow(maskRef), 
             CGImageGetDataProvider(maskRef), 
             NULL, 
             false); 

    CGImageRef maskedImageRef = CGImageCreateWithMask([self CGImage], mask); 

    returnImage = [UIImage imageWithCGImage:maskedImageRef]; 

    CGImageRelease(mask); 
    CGImageRelease(maskedImageRef); 

    return returnImage; 
} 

ここで私は(黒と白)を渡しているマスク画像です:

Mask Image

私はXcodeの7.3.1と私のアプリを構築する場合、私の方法マスク精細な画像:

Xcode 7 build

私はXcodeの8(8.2でも最新)でアプリケーションを実行する場合は、私の方法は、(白の背景が伝わってくる)、結果として得られるイメージが透明に見えるために発生します

Xcode 8 build

私はしないでください何が起こっているのか、なぜXcodeの異なるバージョンがこれを引き起こしているのか(そしてなぜそれがiPhone 7で起こっているのか)を理解してください。 Xcodeの異なるバージョンがCoreGraphicsなどの異なるバージョンを使用しているのかもしれませんか? CoreGraphicsとiPhone 7の違いは、iPhone 6の場合(iPhone 7の画面解像度や処理能力などの理由による可能性があります)と異なる場合がありますか?

私はそれがXcodeの問題であることを知ったので、次に何を試してみるか調べるのに問題があります。

答えて

0

これまでのところ、私が持っている唯一の答えは完全にCGImageMaskCreateCGImageCreateWithMaskをスキップして、アルファマスクのアイコンとUIViewmaskViewプロパティを利用することです。言い換えれば

、今代わりUIImageをマスキングし、画面上の特定のCGRectフレームでそれを描く、今私はこれをやっている:この方法について

imageView = [[UIImageView alloc] initWithFrame:frame]; 
imageView.image = imageToMask; 
imageView.maskView = [[UIImageView alloc] initWithImage:alphaMaskIcon]; 
[view addSubview:imageView]; 

一つの重要なノートがあることはmaskViewです白黒アイコンのピクセルの0.0〜1.0グレースケール値を使用するのではなく、マスキングアイコン内のピクセルのアルファチャネルを使用して、マスクするかまたは通過させるかを決定します。だから、私のバブルアイコンを例にすると、黒の部分は黒く塗りつぶされているはずです。画像のその部分を通過させたいのですが、その周りの白は透明にしなければなりません。 。

関連する問題