0

我有 4 个 UIView,每个视图包含大约 16 个 UIImageView。我正在通过下面的代码将掩码应用于所有 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 分辨率,甚至包括蒙版图像。

4

2 回答 2

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();
于 2013-06-13T12:32:09.587 回答
-1

您曾经使用 CGContextClipToMask 创建蒙版,我认为它会起作用并且不会给您内存警告。你正在使用这么多的图像视图。它在视网膜中的表现如何?它在所有这些掩蔽下都有效吗?

于 2013-06-13T12:03:24.327 回答