Lorsque vous affichez une image d'une URL vers UIImageView, vous pouvez être perdu pendant un moment. Dans ces cas, il est plus facile d'utiliser une bibliothèque de chargement d'images telle que Nuke ou Kingfisher.
Nuke.loadImage(with: url, into: imageView)
Nuke est pratique à utiliser en lui-même, mais il est nécessaire de réfléchir un peu à la manière de gérer la possibilité que le rapport diffère en fonction de l'image à charger. Dans cet article, je vais vous montrer comment calculer le ratio et le rendre parfait via AutoLayout dans de tels cas.
Nuke.loadImage(with: URL(string: imageURL)!, options: ImageLoadingOptions(), into: self.writingImageView, progress: nil) { (result: Result<ImageResponse, ImagePipeline.Error>) in
switch result {
case .success(let imageResponse):
self.imageRateLayoutConstraint.constant = imageResponse.image.size.width / imageResponse.image.size.height
case .failure(let error):
print(error)
}
}
}
Vous pouvez utiliser l'option de complétion de Nuke pour obtenir la taille de l'image acquise et calculer le rapport, de sorte que vous pouvez changer AutoLayout à partir du code en le remplaçant par ʻimageRateLayoutConstraint.constant`.
Pour ajouter le paramètre AutoLayout pour l'image, définissez le rapport hauteur / largeur comme ceci:
Définissez ensuite @IBOutlet faible var imageRateLayoutConstraint: NSLayoutConstraint!
Et connectez-vous sur le Storyboard.
Recommended Posts