TableView行操作中UIContextualAction图片缩小后模糊,如何保留清晰度?
解决UIContextualAction图片缩小后模糊的问题
你遇到的这个问题其实很常见——直接把大尺寸PNG缩成小图,或者用低分辨率的小图,都会因为像素信息不足导致模糊。下面给你几个实用的方案,能让图片在缩小后依然保持清晰:
使用矢量格式图片(推荐)
iOS原生支持PDF格式的矢量图,这类图片无论缩放多少倍都不会失真。你可以把现有的PNG转成PDF格式(用PS、Sketch这类工具都能转),然后导入到Xcode的Asset Catalog中。导入后记得在属性面板里把「Render As」设置为「Template Image」(如果需要调整图片颜色的话)或者「Original Image」,之后直接在代码里用图片名就行,系统会自动适配35x35的尺寸,完全不会模糊。提供多分辨率的PNG图
如果你还是想用PNG,那就给不同分辨率的设备准备对应的图:- 1x:35x35像素
- 2x:70x70像素(35的2倍)
- 3x:105x105像素(35的3倍)
命名的时候按照image.png(1x)、image@2x.png(2x)、image@3x.png(3x)的规则来,导入Xcode后,系统会根据设备的屏幕分辨率自动选择合适的图,这样显示出来的图片就会清晰锐利。
通过代码重绘图片
要是你已经只有一张大尺寸PNG,也可以用代码把它重绘到目标尺寸,这样能保证缩放过程中的清晰度。试试这个工具方法:func resizeImage(named imageName: String, to targetSize: CGSize) -> UIImage? { guard let originalImage = UIImage(named: imageName) else { return nil } let renderer = UIGraphicsImageRenderer(size: targetSize) return renderer.image { context in originalImage.draw(in: CGRect(origin: .zero, size: targetSize)) } }使用的时候直接调用:
let action = UIContextualAction(style: .normal, title: nil) { _, _, completion in // 这里写你的行操作逻辑 completion(true) } action.image = resizeImage(named: "image.png", to: CGSize(width: 35, height: 35))
这几个方案里,用矢量图是最省心的,一劳永逸;多分辨率图适合需要保留PNG透明度或复杂效果的场景;代码重绘则是应急的好办法,你可以根据自己的需求选~
内容的提问来源于stack exchange,提问作者Yuto
相关产品推荐
相关产品推荐

