我有4个uiview每个view包含大约16个UIImageViews。我通过下面的代码
对所有的uiimageview应用蒙版-(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,即使是蒙版图片也是如此。
试试这个"
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();
你曾经使用CGContextClipToMask创建蒙版,我认为它会起作用,不会给你内存警告。你用了太多imageview。它在视网膜上的表现如何?在遮罩的情况下,效果还好吗