Swift3でサーバーにある画像(URL)をUIImageとして描画する方法
参考
Swift 3: Display Image from URL
環境
-Swift3
-Xcode8
実装
まずはlet
で宣言した後に、URL
のコンテンツをダウンロードする。これはURLSession
オブジェクトで行うことができる。補完ハンドラが呼び出されると、Web
からUIImage
がダウンロードされます。
let catPictureURL = URL(string: "https://データのurl/画像データ.jpg")! /* デフォルト設定でセッションオブジェクトを作成する。 */ let session = URLSession(configuration: .default) /* ダウンロードタスクを定義します。ダウンロードタスクは、 URLの内容をデータオブジェクトとしてダウンロードし、 そのデータで望むことを実行できます。 */ let downloadPicTask = session.dataTask(with: catPictureURL) { (data, response, error) in /* ダウンロードが完了しました。 */ if let e = error { print("cat pictureのダウンロード中にエラーが発生しました: \(e)") } else { /* エラーは見つかりませんでした。 レスポンスがないと変わってしまいますので、それもチェックしてください。 */ if let res = response as? HTTPURLResponse { print("レスポンスコード付きの猫の画像をダウンロード \(res.statusCode)") if let imageData = data { /* 最後に、そのデータをイメージに変換し、 それを使って望むことをします。 */ let imageimage = UIImage(data: imageData) print(imageimage!) self.templateThumbnailImageView.image = imageimage /* あなたのイメージで何かをしてください。 */ } else { print("画像を取得できませんでした:画像はありません") } } else { print("何らかの理由で応答コードを取得できませんでした") } } } downloadPicTask.resume()
最後に、downloadPicTask.resume()
で呼び出します。そうしないと、タスクは開始されません。このコードはすべて最初はちょっと気になるかもしれませんが、URLSession API
はブロックベースであり、非同期で動作することができます。UI
スレッドを数秒間ブロックすると、OS
がアプリケーションを終了します。