Создание эскиза для сетки изображений - PullRequest
0 голосов
/ 28 апреля 2011

Я создаю приложение, например, приложение для фотографий от Apple, в iPad.У меня есть большое полноэкранное изображение, и я показываю их с помощью scrollView для управления масштабированием и подкачкой.Основная проблема возникает, когда я пытаюсь создать сетку с миниатюрами изображений.Я создаю их как UIImageView перекрывающихся на UIButton.Все отлично работает, но когда я пробую приложение на iPad, оно требует много памяти, я полагаю, это зависит от изменения масштаба изображения.Есть способ создать UIImageView с небольшим изображением, масштабируя его больше, не используя столько памяти?

1 Ответ

0 голосов
/ 28 апреля 2011

Вы можете использовать UIGraphics для создания эскиза.Вот этот код, чтобы сделать это:

UIGraphicsBeginImageContext(CGSizeMake(length, length));
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGContextClipToRect( currentContext, clippedRect);
CGFloat scaleFactor = length/sideFull;
if (widthGreaterThanHeight) {
    //a landscape image – make context shift the original image to the left when drawn into the context
    CGContextTranslateCTM(currentContext, -((mainImage.size.width - sideFull) / 2) * scaleFactor, 0);
}
else {
    //a portfolio image – make context shift the original image upwards when drawn into the context
    CGContextTranslateCTM(currentContext, 0, -((mainImage.size.height - sideFull) / 2) * scaleFactor);
}
//this will automatically scale any CGImage down/up to the required thumbnail side (length) when the CGImage gets drawn into the context on the next line of code
CGContextScaleCTM(currentContext, scaleFactor, scaleFactor);
[mainImageView.layer renderInContext:currentContext];
UIImage* thumbnail = UIGraphicsGetImageFromCurrentImageContext();
...