2016-12-14 3 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

내가 엑스 코드 7.3.1 내 응용 프로그램을 빌드하는 경우, 내 방법 마스크 좋은 이미지 :

Xcode 7 build

012 내가 엑스 코드 (8)에서 응용 프로그램을 실행하는 경우 3,516,

그러나, (심지어 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 회색 음영 값을 사용하는 대신 마스킹 아이콘에있는 픽셀의 알파 채널을 사용하여 마스크 또는 통과 할 대상을 결정합니다. 예를 들어 버블 아이콘을 사용하면 이미지의 일부분이 나오기를 원하기 때문에 흑색이 여전히 검정색이어야합니다. 그러나 이미지의 일부가 가려지기 때문에 주변의 흰색이 투명해야합니다. .

관련 문제