Swift中如何为数组内每个UIView实例匹配设置center属性?
Swift中批量为UIView实例设置对应center的最佳方式
首先需要明确:本质上无法完全避开遍历操作——因为你需要将两个数组中对应索引的元素一一配对处理,但可以用更简洁、符合Swift风格的写法替代显式的传统for循环。
推荐方案:用zip + forEach
这是最优雅的实现方式,zip会将两个数组按索引配对成元素序列,再通过forEach完成赋值:
zip(uiViewArray, cgPointArray).forEach { view, point in view.center = point }
这种写法没有冗余的索引变量,代码简洁易读,且底层依然是高效的遍历操作,完全满足你的需求。
备选方案:带索引的for循环
如果你更倾向于直观的索引访问,也可以直接遍历数组的索引范围:
for index in uiViewArray.indices { uiViewArray[index].center = cgPointArray[index] }
这种写法逻辑清晰,性能和上面的方案一致。
为什么map无法完成任务
map的设计目的是转换数组元素并生成新数组,它不会修改原数组中的元素:你尝试的UIViewArray.map {$0.center}会返回一个包含所有view当前center值的新数组,而非修改原view的属性,因此无法完成赋值操作。
内容的提问来源于stack exchange,提问作者vonbecker
相关产品推荐
相关产品推荐

