SwiftUI翠鸟模糊图像调整大小



在SwiftUI中,我使用Kingfisher依赖于图像下载/兑现&有以下问题,当图像调整大小时,它会变得低质量和模糊。

这是我的实现:

struct IconView: View {

let frame: CGFloat
let url: String
let iconPath: String
var body: some View {
if !iconPath.isEmpty {
KFImage(URL(string: "(url)(iconPath)"))
.placeholder {
Circle().fill(Color.primaryBackground)
.frame(width: frame, height: frame)
}
.setProcessor(ResizingImageProcessor(referenceSize: CGSize(width: frame , height: frame), mode: .aspectFit))
}
}
}

谁能建议正确的实现?如何不破坏图像质量。

我想我解决了我的问题,这里的问题是Kingfisher以像素计算图像大小,而不是ResizingImageProcessor中的点,所以你必须将图像大小乘以设备比例因子。

有用的讨论:IOS Swift Kingfisher调整处理器大小导致图像模糊;ResizingImageProcessor返回低质量图像

struct IconView: View {

let frame: CGFloat
let url: String
let iconPath: String
var body: some View {
if !iconPath.isEmpty {
KFImage(URL(string: "(url)(iconPath)"))
.placeholder {
Circle().fill(Color.primaryBackground)
.frame(width: frame, height: frame)
}
.resizable()
.setProcessor(ResizingImageProcessor(referenceSize: CGSize(width: frame * scale, height: frame * scale), mode: .aspectFit))
.frame(width: frame, height: frame)
}
}

private var scale: CGFloat {
UIScreen.main.scale
}
}

最新更新