我是iOS开发的新手,很难理解PHImageManager的概念。我在某处读到它可以返回缩略图大小的图像和真正大小的图像,但我无法弄清楚如何。
在我的应用中,我正在使用相机胶卷中的图像显示集合视图。如果用户点击其中一个图像(单元格),则将图像传递给另一个ViewController以便以更大的尺寸查看。我通过使用获取所选单元格imageview.image
属性的segue并将UIImage
推送到下一个ViewController来实现此目的。
我的问题是:如何配置图像管理器以获取集合视图的缩略图大小图像,并在选择图像时加载图像的实际大小?现在我使用40x40的targetSize
将图像加载到集合视图中,但这样在下一个ViewController中打开时它们会失去分辨率。但是,如果我使用图像的实际大小作为集合视图,则加载它需要很长时间。谁能给我一个解决这个问题的方法?
另外:我读了一些关于PHCachingImageManager的内容......它与解决我的问题有什么关系吗?
答案 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
}
}
}