1

У меня есть представление, которое сокращается с помощью UIPinchGesture. Подвью к этому представлению представляет собой UIImageView с ассоциированным изображением. Проблема в том, что масштаб вниз, по-видимому, значительно влияет на качество изображения, когда он достигает примерно 1/4 от первоначально большего размера.Проблемы с CGAffineTransformScale с качеством изображения

Мне любопытно, есть ли способ решить эту проблему без перерисовки изображения с измененным размером по мере его уменьшения.

ответ

2

Я бы сказал, нет.

Лучшим вариантом для улучшения качества изображения во всех штатах (без изменения масштаба) было бы масштабирование исходного изображения до размера на полпути между вашими самыми большими и наименьшими размерами на экране. Это приведет к наименьшему масштабированию изображения с помощью графического процессора.

Кроме этого, просто изменить масштаб изображения всякий раз, когда вы подаете преобразование к представлению по:

+ (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize { 
    //UIGraphicsBeginImageContext(newSize); 
    // In next line, pass 0.0 to use the current device's pixel scaling factor (and thus account for Retina resolution). 
    // Pass 1.0 to force exact pixel size. 
    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0); 
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();  
    UIGraphicsEndImageContext(); 
    return newImage; 
} 

Вам может понадобиться беспокоиться о соотношении сторон, но это совершенно другой вопрос.

+0

Это то, что я делаю, хотя я надеялся, что есть лучшее решение. Благодарю. – Jordan

+0

Лучшее решение для чего? UI гладкость, управление памятью и т. Д.?? – Putz1103

+0

Решение, в котором мне не нужно повторно перерисовывать изображение несколько раз на щепотку. Просто перерисовывая один раз, когда я ущемляюсь от полного экрана до крошечного миниатюры, потенциально может быть пикселирован. У меня были разные пороговые значения для перерисовки. – Jordan