0

各ビューには約16のUIImageViewが含まれる4つのUIViewがあります。そして、以下のコードを使用してすべての 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 に答える