我有一个我正在开发的小型 iPhone 应用程序,我正在使用 UIImageView 显示图像。我正在使用 Aspect Fit 模式将其放大。我想让图像在没有插值/平滑的情况下放大(我希望它看起来像素化)。有什么办法可以改变这种行为吗?
一个更普遍的问题是我可以实现自己的缩放算法,还是我可以选择其他内置算法?
我有一个我正在开发的小型 iPhone 应用程序,我正在使用 UIImageView 显示图像。我正在使用 Aspect Fit 模式将其放大。我想让图像在没有插值/平滑的情况下放大(我希望它看起来像素化)。有什么办法可以改变这种行为吗?
一个更普遍的问题是我可以实现自己的缩放算法,还是我可以选择其他内置算法?
您需要将视图图层上的 magnificationFilter 属性设置为最近邻过滤器:
[[view layer] setMagnificationFilter:kCAFilterNearest]
确保包含该行
#import <QuartzCore/CALayer.h>
在包含对 setMagnificationFilter 的调用的文件顶部,否则将无法编译。
imageView.layer.magnificationFilter = kCAFilterNearest
imageView.layer.shouldRasterize = true
有两种方法可以做到这一点。您可以在不进行插值的情况下实现重新缩放算法。如果工作量太大,您可以在其他应用程序(如 gimp 或 Photoshop)中重新缩放图像。除非您需要在应用程序中动态更改大小,否则这将起作用。