Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 将UIImage掩蔽两次会导致空图像_Iphone_Objective C_Ios_Uiimage - Fatal编程技术网

Iphone 将UIImage掩蔽两次会导致空图像

Iphone 将UIImage掩蔽两次会导致空图像,iphone,objective-c,ios,uiimage,Iphone,Objective C,Ios,Uiimage,我正在使用CGImageMaskCreate创建一个蒙版图像,它在第一次调用时运行良好。但是,当第二次从drawRect调用相同的函数时,创建的蒙版图像为空 - (void)drawRect:(CGRect)rect{ UIImage *maskImage = [UIImage imageNamed:@"circle.png"]; //This will be replaced UIImage *maskedImage = [self maskImage:_selectedIma

我正在使用CGImageMaskCreate创建一个蒙版图像,它在第一次调用时运行良好。但是,当第二次从drawRect调用相同的函数时,创建的蒙版图像为空

- (void)drawRect:(CGRect)rect{    
UIImage *maskImage = [UIImage imageNamed:@"circle.png"]; //This will be replaced    
UIImage *maskedImage = [self maskImage:_selectedImage withMask:maskImage];    
_selectedImage = maskedImage;    
[_selectedImage drawInRect:rect];                      
}

- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {   
    CGImageRef maskRef = maskImage.CGImage;
    CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
                                    CGImageGetHeight(maskRef),
                                    CGImageGetBitsPerComponent(maskRef),
                                    CGImageGetBitsPerPixel(maskRef),
                                    CGImageGetBytesPerRow(maskRef),
                                    CGImageGetDataProvider(maskRef), NULL, false);
    CGImageRef masked = CGImageCreateWithMask([image CGImage], mask);
    UIImage *result = [UIImage imageWithCGImage:masked];
    NSLog(@"    MASK >> RETURNING %@ %f %f", 
           result.description, result.size.width, result.size.height);
return result;
}
draw rect运行三次后,日志的输出为

MASK >> RETURNING UIImage: 0x903d720 320.000000 480.000000
MASK >> RETURNING UIImage: 0x73660c0 0.000000 0.000000
MASK >> RETURNING UIImage: 0x90f7390 0.000000 0.000000
因此,第二次调用后,蒙面图像似乎是空的


帮助会很好,这是我的第一个IOS应用程序,所以这可能是显而易见的。

我认为这是你的程序逻辑:

首先,
\u selectedImage
为空。因此,遮罩会创建一个圆

现在,您的
\u选择的图像
已经包含圆圈。所以第二次你的圆会被遮罩调零


-->预期的行为。如果您没有预料到这一点,也许您希望了解核心图形掩蔽功能。

您找到了吗?我看到了同样的行为。