XCode开发中如何批量生成ImageObject实例存入对象数组
实现方案
首先需要先修正ImageObject结构体的错误定义,原定义中image属性固定初始化为空的PHAsset实例,无法存储实际对应的照片资产:
struct ImageObject: Identifiable { let id = UUID() // 修改为可接收外部传入PHAsset的属性 let asset: PHAsset /// 卡片x轴坐标 var x: CGFloat = 0.0 /// 卡片y轴坐标 var y: CGFloat = 0.0 /// 卡片旋转角度 var degree: Double = 0.0 }
之后将getImages函数末尾的原有遍历逻辑替换为如下代码,即可批量生成ImageObject实例存入imageObjectGroup数组:
// 清空原有数据避免重复加载 imageObjectGroup.removeAll() for asset in imageCollection { // 可根据拼贴需求自定义初始坐标、旋转角度,此处示例为随机值实现错落效果 let initX = CGFloat.random(in: -80...80) let initY = CGFloat.random(in: -80...80) let initDegree = Double.random(in: -20...20) // 生成实例加入数组 let imageObj = ImageObject(asset: asset, x: initX, y: initY, degree: initDegree) imageObjectGroup.append(imageObj) }
如果不需要自定义初始属性,直接用默认值的话可以用更简洁的map写法:
imageObjectGroup = imageCollection.map { ImageObject(asset: $0) }
如果你希望保留原属性名
image,只需要把结构体中asset的属性名改为image,实例化时对应修改参数名即可。
内容的提问来源于stack exchange,提问作者Sachu
相关产品推荐
相关产品推荐

