Cocoa-Touch:如何设置UIImageView使用的插值质量?

时间:2009-11-01 17:26:05

标签: iphone objective-c cocoa-touch core-graphics

我有UIImageView显示的图像比它的框架大。
它设置为重新缩放图像以适合它的帧。但是,图像使用低质量滤镜进行缩放。

read here这是由于它使用低插值质量造成的。

如何将CGContextSetInterpolationQuality转换为kCGInterpolationHigh

3 个答案:

答案 0 :(得分:2)

从“UIImageView scaling/interpolation”开始,如果可以的话,这是最简化的方法:

[[yourimageview layer] setMagnificationFilter:kCAFilterTrilinear]

请务必#import <QuartzCore/CALayer.h>

关于kCAFilterTrilinear的警告:“某些渲染器可能会忽略这一点,或施加其他限制,例如需要二维幂的源图像。”

答案 1 :(得分:1)

CGContextSetInterpolationQuality是一个函数。您需要使用适合您情况的任何参数调用它。

http://developer.apple.com/mac/library/qa/qa2001/qa1186.html

答案 2 :(得分:1)

UIImageView不提供此功能,但如果我没记错的话,UIImage有一个未记录的_imageScaledToSize:interpolationQuality:方法。

由于UIImageView直接绘制到显示,因此子类化和覆盖drawRect:是没有选择的(感谢Prody指出这一点)。我看到的唯一选择是使用自定义drawrect:实现创建自定义UIView子类。