Swiftで画像ローディングライブラリNukeを使ってAutoLayout比率ぴったりで画像を表示する
URLからUIImageViewに画像を表示する時、一瞬迷うかもしれません。
こういう場合は、NukeやKingfisherなどの画像ローディングライブラリを使うと楽です。
Nuke.loadImage(with: url, into: imageView)
Nukeはこれだけで使えて便利ですが、読み込む画像に応じて比率が違ってくる可能性への対応などは少し考える必要があります。
この記事では、そのような場合に比率を計算してAutoLayout経由でピッタリさせる方法をご紹介します。
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)
}
}
}
Nukeのcompletionオプションを使えば取得した画像のサイズをこように取得して比率を計算することができますので imageRateLayoutConstraint.constant
に代入することでコードからAutoLayoutに変更を与えることが出来ます。
画像に比率のAutoLayout設定を加えるには、このようにAspect Ratioを設定してください。
そして @IBOutlet weak var imageRateLayoutConstraint: NSLayoutConstraint!
などを定義して Storyboard 上で接続します。
Author And Source
この問題について(Swiftで画像ローディングライブラリNukeを使ってAutoLayout比率ぴったりで画像を表示する), 我々は、より多くの情報をここで見つけました https://qiita.com/yoneapp/items/7dfc7a9dc8d41b73fbbc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .