Afficher les images avec le rapport de mise en page automatique exactement en utilisant la bibliothèque de chargement d'images Nuke dans Swift

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:

CleanShot 2020-10-08 at 18.38.37@2x.png

Définissez ensuite @IBOutlet faible var imageRateLayoutConstraint: NSLayoutConstraint! Et connectez-vous sur le Storyboard.

Recommended Posts

Afficher les images avec le rapport de mise en page automatique exactement en utilisant la bibliothèque de chargement d'images Nuke dans Swift
Utiliser la bibliothèque C avec Swift en utilisant les modules Clang (modulemap)
Afficher une image de chargement dans JavaFX puis afficher une autre image