gpt4 book ai didi

swift - 如何在单元格中获取最近创建的照片?

转载 作者:可可西里 更新时间:2023-11-01 00:58:27 27 4
gpt4 key购买 nike

你好,我有一个关于 PHImageFetch 的问题

我正在尝试使用 PHFetchOptions 获取最近创建的图像。

但它总是返回过去创建的图像。

这是我的简单代码。有人可以帮助我吗?

它总是从库中返回过去创建的照片。

override func collectionView(collectionView: UICollectionView, willDisplayCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: NSIndexPath) {


let options = PHImageRequestOptions()
options.networkAccessAllowed = true
options.synchronous = false

//I want use this!
let fetchOptions = PHFetchOptions()
fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: true)]
//

PHImageManager.defaultManager().requestImageForAsset(assets?[indexPath.row] as! PHAsset, targetSize: CGSizeMake(114, 114), contentMode: PHImageContentMode.AspectFill, options: options) { (image, info) -> Void in
if (image != nil) {
(cell as! PhotoCell).image = image
}
}



}

我正在尝试通过 PHFetchOptions 获取最近创建的照片。

我已经在尝试设置“fetchOptions.sortDescriptors = [NSSortDescriptor(key: “creationDate”, ascending: true)]”或者"fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]"

但结果是一样的...过去创建的照片。

当我获取最近创建的图像然后将图像设置到 override func collectionView(collectionView: UICollectionView, willDisplayCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: NSIndexPath) 中的单元格时,这个逻辑是否正常? .

override func collectionView(collectionView: UICollectionView, willDisplayCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: NSIndexPath) {

if isGellery == true {



let options = PHImageRequestOptions()
options.networkAccessAllowed = true
options.synchronous = false

let fetchOptions = PHFetchOptions()
fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: true)]

// Sort the images by creation date

//
if let fetchResult: PHFetchResult = PHAsset.fetchAssetsWithMediaType(PHAssetMediaType.Image, options: fetchOptions) {
//
// // If the fetch result isn't empty,
// // proceed with the image request
if fetchResult.count > 0 {
// // Perform the image request
imgManager.requestImageForAsset(assets?[indexPath.row] as! PHAsset, targetSize: CGSizeMake(114, 114), contentMode: PHImageContentMode.AspectFill, options: requestOptions, resultHandler: { (image, _) in

if (image != nil) {
(cell as! PhotoCell).image = image
}
})
}
}


}


}

block 是我试图获取的内容。

我认为这是 indexPath.row 的问题..

最佳答案

也许您应该使用专门的方法抓取所有照片。在这里,每次调用 willDisplayCell 时,您都会循环浏览所有照片。

这是我按创建日期抓取所有用户照片的方法。

func grabPhotos(){

let imgManager = PHImageManager.defaultManager()

let requestOptions = PHImageRequestOptions()
requestOptions.synchronous = true
requestOptions.deliveryMode = .HighQualityFormat

let fetchOptions = PHFetchOptions()
fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]

if let fetchResult : PHFetchResult = PHAsset.fetchAssetsWithMediaType(.Image, options: fetchOptions){

if fetchResult.count > 0{

for i in 0..<fetchResult.count{
let asset = fetchResult.objectAtIndex(i) as! PHAsset

imgManager.requestImageForAsset(fetchResult.objectAtIndex(i) as! PHAsset, targetSize: CGSize(width: 200,height: 200), contentMode: .AspectFill, options: requestOptions, resultHandler: { (image, error) in
self.imageArray.append(image!)
})
}
}
else{
print("you got no photos")
self.collectionView?.reloadData()
}
}
}

看看这个很好的教程:https://www.youtube.com/watch?v=BFZ4ZCw_9z4

关于swift - 如何在单元格中获取最近创建的照片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39441146/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com