如何将PHImageManager与UICollectionView一起使用

时间:2015-10-19 14:20:49

标签: ios objective-c image uicollectionview photosframework

我是iOS开发的新手,很难理解PHImageManager的概念。我在某处读到它可以返回缩略图大小的图像和真正大小的图像,但我无法弄清楚如何。

在我的应用中,我正在使用相机胶卷中的图像显示集合视图。如果用户点击其中一个图像(单元格),则将图像传递给另一个ViewController以便以更大的尺寸查看。我通过使用获取所选单元格imageview.image属性的segue并将UIImage推送到下一个ViewController来实现此目的。

我的问题是:如何配置图像管理器以获取集合视图的缩略图大小图像,并在选择图像时加载图像的实际大小?现在我使用40x40的targetSize将图像加载到集合视图中,但这样在下一个ViewController中打开时它们会失去分辨率。但是,如果我使用图像的实际大小作为集合视图,则加载它需要很长时间。谁能给我一个解决这个问题的方法?

另外:我读了一些关于PHCachingImageManager的内容......它与解决我的问题有什么关系吗?

1 个答案:

答案 0 :(得分:2)

我希望这段代码可以帮助你。

如果您使用我的代码完成,那么请选择我的答案谢谢。

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

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




        }