Рендеринг больших изображений на iPad: сбои

Я использую функцию ниже, чтобы визуализировать вид как изображение. Проблема заключается в том, что для изображений размером более 2000 пикселей давление памяти слишком велико, и приложение вылетает. На симуляторе он отлично работает при любом размере, но на iPad (2 или выше) объем памяти превышает 80 МБ.

Есть ли какой-нибудь "умный" способ визуализации больших представлений?

-(UIImage*)renderToImageUsingContextFixedScale{
UIImage*im2;
CGFloat scale = 1.0;

if(UIGraphicsBeginImageContextWithOptions != NULL)
{
    if(scale > 1.0) {
        UIGraphicsBeginImageContextWithOptions(self.frame.size, NO, scale);
    } else {
        UIGraphicsBeginImageContextWithOptions(self.frame.size, NO, scale);

    }
} else {
    UIGraphicsBeginImageContext(self.frame.size);
}


//::::::::::::::::
CGContextScaleCTM(UIGraphicsGetCurrentContext(), scale, scale);
//::::::::::::::::
@autoreleasepool {
    [self.layer renderInContext:UIGraphicsGetCurrentContext()];
    im2 = UIGraphicsGetImageFromCurrentImageContext();
///THE ERROR OCCURS HERE:
    UIGraphicsEndImageContext();
   }
//:::::::::::::::::::::::::::


return im2;
}

0 ответов

Другие вопросы по тегам