You need to enable JavaScript to run this app. XCode开发中如何批量生成ImageObject实例存入对象数组
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 03:57:04