我有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分辨率,甚至也是掩模图像。
答案 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。它在视网膜中的表现如何?是否可以通过所有屏蔽工作。