在我的项目中,我使用了swift中的AlamofireImage。现在,我们用KingFisher库替换了AlamofireImage。我已经使用下面的方法创建了一个结构来适应过滤器
struct AspectScaledToFitAndCenterSizeFilter: ImageFilter, Sizable {
/// The size of the filter.
let size: CGSize
/// Initializes the `AspectScaledToFitSizeFilter` instance with the given size.
///
/// - parameter size: The size.
///
/// - returns: The new `AspectScaledToFitSizeFilter` instance.
init(size: CGSize) {
self.size = size
}
/// The filter closure used to create the modified representation of the given image.
var filter: (UIImage) -> UIImage {
{ image in
image.imageAspectScaledAndCenter(toFit: self.size)
}
}
} 当我们使用AlmofireImage时,使用下面的代码来设置图像url
imageView.af.setImage(withURL: imageURL.mediaURL(), placeholderImage: #imageLiteral(resourceName: "icMissingEntreeGrid"), filter: AspectScaledToFitAndCenterSizeFilter(size: imageSize))现在我将代码替换为
imageView.kf.setImage(with: imageURL.mediaURL(), placeholder: imageLiteral(resourceName: "icMissingEntreeGrid"))而是如何使用KingFisher库添加“AspectScaledToFitAndCenterSizeFilter(size:imageSize)”。有谁能帮帮我吗。提前谢谢。
发布于 2021-09-22 16:57:24
要创建翠鸟图像处理器,需要实现ImageProcessor协议:
class AspectScaledToFitAndCenterSizeFilter: ImageProcessor {
/// Identifier of the processor.
/// - Note: See documentation of `ImageProcessor` protocol for more.
let identifier: String
/// The size of the filter.
let size: CGSize
/// Initializes the `AspectScaledToFitSizeFilter` instance with the given size.
///
/// - parameter size: The size.
///
/// - returns: The new `AspectScaledToFitSizeFilter` instance.
init(size: CGSize) {
self.size = size
identifier = "com.package.AspectScaledToFitAndCenterSizeFilter(\(size))"
}
func process(item: ImageProcessItem, options: KingfisherParsedOptionsInfo) -> KFCrossPlatformImage? {
switch item {
case .image(let image):
return image.imageAspectScaledAndCenter(toFit: self.size)
case .data:
return (DefaultImageProcessor.default |> self).process(item: item, options: options)
}
}
}用法:
imageView.kf.setImage(
with: imageURL.mediaURL(),
placeholder: #imageLiteral(resourceName: "icMissingEntreeGrid"),
options: [
.processor(AspectScaledToFitAndCenterSizeFilter(size: .zero))
]
)在documentation中查看更多处理器使用情况。
https://stackoverflow.com/questions/69282769
复制相似问题