Маскировка UIImageView создает предупреждения памяти

У меня есть 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, даже изображения масок.


person DipakSonara    schedule 13.06.2013    source источник
comment
Я не знаю, является ли проблема вашим изображением маски или фактическими изображениями в ваших uiimageviews. Проверьте этот пост и посмотрите, поможет ли он. stackoverflow.com/questions/12773074/   -  person Sam B    schedule 13.06.2013


Ответы (2)


Попробуйте с этим"

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();
person Kumar KL    schedule 13.06.2013

Вы когда-либо использовали создание маски с помощью CGContextClipToMask, я думаю, что это сработает и не даст вам предупреждений о памяти. Вы используете так много изображений. как это производительность в сетчатке? это работает со всей этой маскировкой.

person Amrit Trivedi    schedule 13.06.2013
comment
Извините, Амрит, это тоже не работает, я уже это сделал. Кстати, спасибо. - person DipakSonara; 13.06.2013