Tôi biết rằng có đã là câu hỏi này trên SO, nhưng tôi không nghĩ rằng câu trả lời được đưa ra là thỏa mãn/hoàn thành: How can IOS Photos app can show hundreds of photos in one screen?Làm thế nào để sử dụng PHCachingImageManager
Những gì tôi muốn đạt được
tôi muốn một cái gì đó giống như lựa chọn hình ảnh trong whatsapp (iOS) (xem ảnh chụp màn hình). Khi bạn mở máy ảnh, cũng có thanh trượt ngang, nơi bạn có thể xem tất cả hình ảnh từ thư viện của mình.
Những gì tôi cố gắng
Ngay bây giờ tôi có đoạn mã sau vào appdelegate tôi:
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)
}
Sau đó tôi tải các hình ảnh trong một UITableViewController và gọi hàm sau trên cuộn:
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()
})
}
Điều này hoạt động tốt nhưng tôi có vấn đề là trên mỗi ứng dụng bắt đầu tất cả các tài sản của tôi được lưu trữ. Đây có phải là cách tiếp cận đúng cho vấn đề của tôi không? Làm thế nào tôi có thể hiển thị các thư viện ảnh trong thời gian thực như whatsapp?
Tại sao bạn muốn nội dung khi bạn có thể tìm lại chúng? Lưu trữ chúng có thể phức tạp vì một số nội dung có thể đã bị xóa/thêm/sửa đổi sau khi ứng dụng của bạn bị giết. Ngoài ra bạn không phải lấy tất cả chúng một lần nữa. Bạn chỉ cần tìm nạp những thứ bạn cần để hiển thị người dùng trên màn hình tại thời điểm đó. Một số bối cảnh về nhu cầu lưu trữ chúng sẽ giúp ích cho bạn. – jarora
@jarora Tôi đã chỉnh sửa toàn bộ câu hỏi của mình, cung cấp mã và ví dụ tôi muốn đạt được. –