Ios 如何将纯色图像插入照片库collectionview
我已经实现了在我的Ios 如何将纯色图像插入照片库collectionview,ios,swift,xcode,Ios,Swift,Xcode,我已经实现了在我的UICollectionView中显示照片库图像的代码,但我真的希望我的第6、第7和第12个单元格是纯色的。有可能实现吗?基本上,我需要以某种方式插入单元格,而不是破坏从照片库插入图像的代码 像这样: 我的代码: func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
UICollectionView
中显示照片库图像的代码,但我真的希望我的第6、第7和第12个单元格是纯色的。有可能实现吗?基本上,我需要以某种方式插入单元格,而不是破坏从照片库插入图像的代码
像这样:
我的代码:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "photocell", for: indexPath) as! AlbumCollectionViewCell
cell.image.layer.cornerRadius = 5
cell.image.clipsToBounds = true
let asset = images[indexPath.row]
let manager = PHImageManager.default()
if cell.tag != 0 {
manager.cancelImageRequest(PHImageRequestID(cell.tag))
}
cell.tag = Int(manager.requestImage(for: asset,
targetSize: CGSize(width: 250.0, height: 250.0),
contentMode: .aspectFill,
options: nil) { (result, _) in
cell.image.image = result
})
return cell
}
我还使用反转图像阵列:
func getImages() {
let assets = PHAsset.fetchAssets(with: PHAssetMediaType.image, options: nil)
assets.enumerateObjects({ (object, count, stop) in
// self.cameraAssets.add(object)
self.images.append(object)
})
//In order to get latest image first, we just reverse the array
self.images.reverse()
// To show photos, I have taken a UICollectionView
self.photosCollectionView.reloadData()
}
问题是,你可以有多种类型的细胞。因此,您可以使用一些显示图像的单元格和其他显示实心色样的单元格。因此,根据这是什么项目,而不是说
collectionView.dequeueReusableCell(使用ReuseIdentifier:“photocell”
,您应该说collectionView.dequeueReusableCell(使用ReuseIdentifier:“swatchcell”
),然后您应该配置样例而不是配置照片
编辑您添加了评论:
我想在我的图像数组中插入更多的新项,这是[PHAsset]数据类型
哦,所以现在的问题仅仅是数据的模型应该是什么。这很简单:只需使用一种资产或颜色的数据类型,并将其组成一个数组:
enum AssetOrColor {
case asset(PHAsset)
case color(UIColor)
}
嗯。如果我要在照片库PHAsset()图像的顶部放置一个纯色单元格(我理解您的答案),这是一个不错的解决方案。我要尝试一下,但我想在我的图像数组中插入更多的新项目,即[PHAsset]数据类型。这稍微复杂一点,但这对于我正在构建的内容来说是完美的。我将在明天澄清我的问题。我试图插入,但这并不容易,因为数组是相集类型。或者可能我完全错了。也许另一种解决方案是在数组中创建空白对象,然后在顶部设置不同的单元格类型。我DK你需要一个联合对象,一个资产或颜色的对象。这很简单。我像你说的那样创建了enum AssetOrCollor,我的数组现在看起来是这样的:“var images=[AssetOrImage]()”。现在我不明白你说我需要联合对象的意思。我做了一项研究,发现有联合()函数不适合我,因为根据Apple文档,如果我不“关心集合中元素的顺序”,我需要使用Set,这是完美的。但我关心它。此外,我无法在getImages()中将'PHAsset'转换为预期的参数类型'AssetImages'函数。嗯,我最近自己开发了解决问题的工作解决方案,但我认为我会用它赢得最佳坏代码实践竞赛(lol)。只需创建var images=[Any](),然后创建另一个不同数据类型的数组并插入到images数组中。当我设置单元格时,我只使用typeOfItem()函数检查数据类型。无论如何,我将尝试理解您的解决方案,并在明天亲自尝试。