- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个带有自定义 UICollectionViewCell
的 UICollectionView
,它应该从照片中获取并显示缩略图(低质量)照片(通常用户可以选择多于 1 张照片)在单元格中的每个 UIImageView
中。
我一直在研究 PHImageRequestOptions
及其属性,阅读有关它们的信息。在某种程度上,我什至将 nil
作为 requestImage(for: PHAsset)
方法的参数传递,因为我不确定我哪里错了。
问题是 requestImage(for: PHAsset)
方法被调用了两次。我需要第一次调用它只是为了在每个 Collection View 单元格中设置低质量的图像(缩略图),一旦全尺寸图像准备就绪,它应该添加到名为 assetsTurnedIntoImages< 的图像数组中
。问题是我做错了什么,我总是会调用两次 if
和 else
方法,所以基本上,如果我从相机中选择了 4 张图像滚动(因此,我在 assets 数组中有 4 个图像)并且当它们通过 requestImage(for: asset) 方法时,我在 assetsTurnedIntoImages
中得到 8 个图像而不是 4 个。所以这是我的代码
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
print("Assets count is:", assets.count)
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "PhotoPostCVCell", for: indexPath) as! PhotoPostCVCell
if let takenImage = cameraPhotoUIImage
{
cell.cellImage.image = takenImage
}
if assets.count > 0
{
let asset = assets[indexPath.row]
// var imageRequestOptions: PHImageRequestOptions
// {
// let options = PHImageRequestOptions()
// //options.version = .current
// //options.resizeMode = .exact
// //options.deliveryMode = .fastFormat
// options.isSynchronous = true
// return options
// }
let targetSize = CGSize(width: asset.pixelWidth, height: asset.pixelHeight)
imageManager.requestImage(for: asset, targetSize: targetSize, contentMode: .aspectFill, options: nil)
{ (image, info) in
if image != nil
{
let imageQualityState = info![PHImageResultIsDegradedKey] as! Bool
if imageQualityState
{
print("LOW QUALITY")
print("Image Quality State is:", imageQualityState)
cell.cellImage.image = image
print(image!.size)
}
else
{
print(image!.size)
cell.cellImage.image = image
self.assetsTurnedIntoImages.append(image!)
}
}
}
}
return cell
}
最佳答案
您可以通过包含以下条件来丢弃那些低分辨率的副本:
imageManager.requestImage(for: asset, targetSize: targetSize, contentMode: .aspectFill, options: nil) { (image, info) in
let isDegraded = (info?[PHImageResultIsDegradedKey] as? Bool) ?? false
if isDegraded {
return
}
关于ios - PHCachingImageManager.requestImage 总是被调用两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46324657/
我有一组图片资源。我必须将这些 Assets 转换为图像,将它们添加到数组并将它们上传到 Firebase 数据库。我有两个问题。 问题 1: 在自定义 UICollectionViewCell 中,
当调用此方法时,我的应用程序因错误 Thread 1: EXC_BAD_INSTRUCTION 而崩溃: imageManager.requestImage(for: asset!, targetSi
我有一个带有自定义 UICollectionViewCell 的 UICollectionView,它应该从照片中获取并显示缩略图(低质量)照片(通常用户可以选择多于 1 张照片)在单元格中的每个 U
当我尝试获取具有特定尺寸的图像时,PHImageManager.default().requestImage 被调用两次,并使用不同尺寸的图像。 代码如下: static func load(from
我正在尝试实现一个简单的 PxImageProvider。源图像是静态的,我只提供一张图像。似乎 requestedSize 总是空的。即使我尝试在 QML 端修改图像大小时,图像也会重新缩放,但看起
我有一个 Collection View ,其中显示所有用户的照片。基本的东西,一个数据源,它获取 PHAssets 并在 PHCachingImageManager 上使用 requestImage
我在我的项目中使用 Fusuma pod,但在最新的 iOS 13 中,存在一个与从图库中选择的图像相关的错误。 确切地说,如果选择的图像来自图库(在带有 ios 13 的 iPhone 设备上,而不
我是一名优秀的程序员,十分优秀!