【Swift 3】NSDataからUIImageに変換するのは重いのでバックグラウンドで処理する

NSDataからUIImageに変換

UIImageをCoreDataに保存したい場合は、一旦NSData(バイナリデータ)に変換してから保存します。この画像を再度利用したい場合は、保存しているNSDataをUIImageに変換すればいいのですが、普通に実行するとこの変換部分で処理が止まったような状態になります

こういう場合はバックグラウンドで処理すればOKです

// imageData(NSData)に画像のバイナリデータが入っている状態です

// 重い処理をバックグラウンドで処理する
DispatchQueue.global().async {
    
    // NSDataをUIImageに変換
    let myImage = UIImage(data: imageData as! Data)
    
    // 画面の更新はメインスレッドで行う
    DispatchQueue.main.async {
        
        // 表示するUIImageViewは非表示にする
        self.myImageView.alpha = 0.0
        
        // 画像をセットする
        self.myImageView.image = myImage
        
        // 画像の準備が完了したらUIImageViewを表示する
        UIView.animate(withDuration: 0.3, delay: 0.0, options: UIViewAnimationOptions.curveEaseOut, animations: {() -> Void in
            self.myImageView.alpha  = 1.0
            }, completion: {(finished: Bool) -> Void in
        })        
    }
}
関連コンテンツ
A8広告
ブログランキング
  • にほんブログ村 教育ブログ プログラミング教育へ
  • にほんブログ村 子育てブログ 子供の習い事(教室・業者)へ

  • スポンサーリンク
    Google336 記事下
    Google336 記事下

    シェアする

    • このエントリーをはてなブックマークに追加

    フォローする

    スポンサーリンク
    Google336 記事下
    トップへ戻る