Ios 根据从url加载的图像调整翠鸟图像大小

Ios 根据从url加载的图像调整翠鸟图像大小,ios,swift3,Ios,Swift3,我有uitableview,在这个uitableview中我有一个手机。此单元格有一个2 uiimageview,相邻,宽度相等。我希望这两个2 uiimageview都占整个宽度,第一个imageview占屏幕宽度的一半,第二个imageview占另一半。我从翠鸟得到的图片,我怎样才能根据宽度调整从url得到的图片的大小。例如,如果图像是200-200,我得到的半宽是400..我希望我的图像高度调整为400。如果我得到了300-400,我和我得到了150的宽度。我希望我的图像高度调整到200。

我有uitableview,在这个uitableview中我有一个手机。此单元格有一个2 uiimageview,相邻,宽度相等。我希望这两个2 uiimageview都占整个宽度,第一个imageview占屏幕宽度的一半,第二个imageview占另一半。我从翠鸟得到的图片,我怎样才能根据宽度调整从url得到的图片的大小。例如,如果图像是200-200,我得到的半宽是400..我希望我的图像高度调整为400。如果我得到了300-400,我和我得到了150的宽度。我希望我的图像高度调整到200。同时调整正在处理的单元格的大小


使用翠鸟图书馆如何做到这一点?

使用翠鸟,我做了以下工作

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)

    })