Wenn Sie ein Bild von einer URL zu UIImageView anzeigen, sind Sie möglicherweise für einen Moment ratlos. In diesen Fällen ist es einfacher, eine Bildladebibliothek wie Nuke oder Kingfisher zu verwenden.
Nuke.loadImage(with: url, into: imageView)
Nuke ist bequem für sich zu verwenden, aber es ist notwendig, ein wenig darüber nachzudenken, wie man mit der Möglichkeit umgeht, dass sich das Verhältnis je nach zu ladendem Bild unterscheidet. In diesem Artikel werde ich Ihnen zeigen, wie Sie das Verhältnis berechnen und in solchen Fällen über AutoLayout perfektionieren können.
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)
}
}
}
Sie können die Abschlussoption von Nuke verwenden, um die Größe des erfassten Bilds zu ermitteln und das Verhältnis zu berechnen. Sie können also das AutoLayout aus dem Code ändern, indem Sie es in "imageRateLayoutConstraint.constant" einsetzen.
Um die AutoLayout-Einstellung für das Bild hinzuzufügen, stellen Sie das Seitenverhältnis wie folgt ein:
Definieren Sie dann "@IBOutlet schwach var imageRateLayoutConstraint: NSLayoutConstraint!" Und stellen Sie eine Verbindung im Storyboard her.