SO にこの質問が既にあることは知っていますが、与えられた答えが満足のいくもの/完全なものであるとは思いません: How can IOS Photos app can show何百もの写真を 1 つの画面に表示できますか?
達成したいこと
whatsapp(iOS)での画像選択のようなものが必要です(スクリーンショットを参照)。カメラを開くと、ギャラリーのすべての画像を表示できる水平スライダーもあります。
私が試したこと
現在、appDelegate に次のコードがあります。
let options = PHFetchOptions()
options.sortDescriptors = [
NSSortDescriptor(key: "creationDate", ascending: true)
]
if let results = PHAsset.fetchAssetsWithMediaType(.Image, options: options) {
results.enumerateObjectsUsingBlock { (object, idx, _) in
if let asset = object as? PHAsset {
Variables.assets.append(asset)
}
}
println(Variables.assets.count)
Variables.imageManager.startCachingImagesForAssets(Variables.assets, targetSize: CGSizeMake(viewWidth, viewWidth), contentMode: .AspectFill, options: self.requestOptions)
}
後で、UITableViewController に画像をロードし、スクロール時に次の関数を呼び出します。
func fetchPhotoAtIndex(index : Int) {
let asset = Variables.assets[Variables.assets.count - 1 - index] as PHAsset
Variables.imageManager.requestImageForAsset(asset, targetSize: CGSizeMake(self.viewWidth, self.viewWidth), contentMode: .AspectFill, options: self.requestOptions, resultHandler: { (image, _) in
println("\(asset.localIdentifier) \(asset.creationDate) ")
[...]
self.tableView.reloadData()
})
}
これはうまく機能しますが、アプリを起動するたびにすべてのアセットがキャッシュされるという問題があります。これは私の問題に対する正しいアプローチですか? whatsappのようにギャラリーの写真をリアルタイムで表示するにはどうすればよいですか?