我有uitableview,在这个uitableview中我得到了一个单元格。这个单元格有一个2 uiimage视图,彼此相邻,宽度相等。我希望这两个2imageviews都取整个宽度,第一个imageview一半宽度屏幕第二个imageview另一半。我从翠鸟那里得到了图像,我怎么能从网址上调整图像的大小。如果图像是200 - 200,例如,我得到的半宽是400 ..我希望我的图像高度调整为400.如果我得到300 - 400,我和我得到宽度150 ..我希望我的图像高度调整大小到了200.并且还在调整细胞的大小。
如何使用翠鸟图书馆完成这项工作?
答案 0 :(得分:1)
使用Kingfisher我做了以下事情。
let url = URL(string: urlImage)
cell.imageView?.kf.setImage(with: url,
placeholder: nil,
options: [.transition(ImageTransition.fade(1))],
progressBlock: { receivedSize, totalSize in
print("\(indexPath.row + 1): \(receivedSize)/\(totalSize)")
},
completionHandler: { image, error, cacheType, imageURL in
print("\(indexPath.row + 1): Finished")
print(image?.size)
cell.imageView?.image = self.resizeImage(image: image!, newWidth: 40.0)
})
你可以修改resizeImage函数以改变图像大小,在我的例子中我制作了一个方形图像。
func resizeImage(image: UIImage, newWidth: CGFloat) -> UIImage {
let scale = newWidth / image.size.width
let newHeight = image.size.height * scale
UIGraphicsBeginImageContext(CGSize(width: newWidth, height: newHeight))
image.draw(in: CGRect(x: 0, y: 0, width: newWidth, height: newHeight))
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage!
}
或者您可以使用KingfisherManager
KingfisherManager.shared.retrieveImage(with: url!, options: nil, progressBlock: nil, completionHandler: { image, error, cacheType, imageURL in
cell.imageView?.image = ImageUtils.resizeImage(image: image!, newWidth: 40.0)
})