UIImageView屏蔽会创建内存警告

时间:2013-06-13 12:00:26

标签: ios uiimageview calayer masking image-masking

我有4个UIViews,每个视图包含大约16个UIImageViews。 我通过下面的代码

将掩码应用到所有UIImageViews
-(void)setMask:(UIImage*)maskImage forImageView:(UIImageView*)imageView
{
    CALayer *mask = [[[CALayer alloc] init] autorelease];
    mask.contents = (id)[maskImage CGImage];
    mask.frame = CGRectMake(0, 0, 1024, 768);
    imageView.layer.mask = mask;
    imageView.layer.masksToBounds = YES;
    return;
}

这是UIImageView屏蔽的正确代码吗?

每个UIImageView都是通过掩码更改图像。但是在超过5个UIImageView“接收内存警告”后更改图像后。出现,它崩溃了。 所有图像都是1024 * 768分辨率,甚至也是掩模图像。

2 个答案:

答案 0 :(得分:1)

试试这个“

  

UIGraphicsBeginImageContextWithOptions

但我不确定这会对你有所帮助。但我在很多情况下一直在使用它,我没有收到任何警告。尝试它可能会有所帮助。   像这样:

UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, NO, 1.0); //retina res
[self.imageView.layer renderInContext:UIGraphicsGetCurrentContext()];
[imageView.image drawInRect:CGRectMake(0, 0, 703, 294)];
[maskImages.image drawAtPoint:CGPointMake(10, 10) blendMode:kCGBlendModeNormal alpha:0.2];

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

答案 1 :(得分:-1)

你曾经使用CGContextClipToMask创建掩码我觉得它会起作用,不会给你内存警告。你正在使用这么多的imageview。它在视网膜中的表现如何?是否可以通过所有屏蔽工作。