我有一个通过 UIPinchGesture 缩小的视图。该视图的子视图是带有关联图像的 UIImageView。问题在于,当图像缩小到原来较大尺寸的 1/4 左右时,它似乎会显着影响图像的质量。
我很好奇是否有一种方法可以解决此问题,而无需在按比例缩小时以更改后的大小重新绘制图像。
我有一个通过 UIPinchGesture 缩小的视图。该视图的子视图是带有关联图像的 UIImageView。问题在于,当图像缩小到原来较大尺寸的 1/4 左右时,它似乎会显着影响图像的质量。
我很好奇是否有一种方法可以解决此问题,而无需在按比例缩小时以更改后的大小重新绘制图像。
我会说不。
您必须在所有状态下提高图像可见质量(无需重新缩放任何内容)的最佳选择是将原始图像缩放到屏幕上最大和最小尺寸之间的中间尺寸。这将导致 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;
}
您可能需要担心纵横比,但这完全是另一个问题。