スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【Swift】requestImageForAssetがめちゃくちゃ遅い

requestImageForAssetで画像をライブラリから読み込もうとしたら、
「3G回線でどこかからダウンロードしてるの?」
というくらい読み込みが遅く途方に暮れてしまった。
CPUを観察していると待ち時間の間まったくプロセスに動きはなく、謎の空白時間のあとに画像がぴょこっと出てくる感じ。
いろいろ調べたが、ネットにもほとんど情報がなかった。
ネットに情報がないということも情報の1つと言えて、こういう場合は問題と思っている場所以外の場所に問題があることが多いのだが、それもみつからず。
あれこれやっていたら変な方法で解決したのでとりあえず書く。
まず、下記だとめちゃくちゃ遅い。


let options:PHImageRequestOptions = PHImageRequestOptions()
let size = CGSize(width: 100, height: 100)
options.deliveryMode = PHImageRequestOptionsDeliveryMode.HighQualityFormat
options.synchronous = false
PHImageManager.defaultManager().requestImageForAsset(self.selectedAssets[i],targetSize: size, contentMode: .AspectFit, options: options) {
image, info in
var tmp:UIImageView = UIImageView()
tmp = UIImageView(frame: CGRectMake(0,0,100,100))
tmp.image = image
NSOperationQueue.mainQueue().addOperationWithBlock({
self.screenshots.append(tmp)
self.scroll.addSubview(btn)
})
}


それを下記のようにした。


let options:PHImageRequestOptions = PHImageRequestOptions()
let size = CGSize(width: 100, height: 100)
options.deliveryMode = PHImageRequestOptionsDeliveryMode.HighQualityFormat
options.synchronous = false
PHImageManager.defaultManager().requestImageForAsset(self.selectedAssets[i],targetSize: size, contentMode: .AspectFit, options: options) {
image, info in
var tmp:UIImageView = UIImageView()
tmp = UIImageView(frame: CGRectMake(0,0,100,100))
tmp.image = image
NSOperationQueue.mainQueue().addOperationWithBlock({
self.view.backgroundColor = UIColor.whiteColor()
self.screenshots.append(tmp)
self.scroll.addSubview(btn)
})
}




赤字の部分を加えただけ。この部分の処理には何の意味もない。
画像の読み込み云々ではなくて、なにか根本的な部分の理解ができていないように思えるが、
とりあえず一時しのぎ。

コメント

コメントの投稿

非公開コメント

PR

PR

プロフィール

何でも書くman

Author:何でも書くman
思ったことや備忘録など、とりあえずなんでも書きます。IT系のことや趣味、生活に関わることなども。

ページの先頭へ戻る
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。