1

我有一個視圖正在通過UIPinchGesture縮小比例。該視圖的子視圖是帶有關聯圖像的UIImageView。問題在於,縮小比例似乎影響圖像的質量,當它達到原始大尺寸的1/4時。CGAffineTransformScale問題與圖像質量

我很好奇,如果有一種方法可以解決這個問題,而不需要按照縮小的尺寸重新繪製圖像。

回答

2

我會說不。

要在所有狀態下改善圖像可見質量(無需重新縮放任何內容),最佳選擇是將原始圖像縮放至屏幕上最大和最小尺寸之間的一半。這將導致GPU最小的圖像縮放。

除此之外,只需重新調整每當你應用通過變換到視圖圖像:

+ (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