Swift中如何使用循环生成4个UIImageView与16个UILabel并完成布局
问题解答
是否可以使用
for i in 0 ... 3循环,在循环内部执行var image = UIImageView()来创建图片视图?
完全可以,这是批量生成同类型视图的标准实现方式,比手动写4遍UIImageView初始化代码效率高很多。创建后你可以把实例存到提前声明好的数组里方便后续修改内容,也可以直接调用addSubview添加到父视图上。编写的伪代码逻辑是否合理?
这段伪代码存在不少问题,逻辑完全不可用:
- 循环内部重复定义了
currentY、width、height、images这些变量,重复声明同名变量会直接报错,这类公共参数只需要在循环外定义一次即可。 - 只在
i=1的分支里写了i += 1,其他分支没有自增逻辑,运行后会直接进入死循环。 - 条件判断用了单等号
=,这是赋值操作,Swift里判断值相等需要用双等号==。 - 每个
if分支里的逻辑完全一致,没必要拆分多个分支写冗余代码。
给页面元素设置屏幕坐标时,是否需要将坐标存入变量按固定步长调整?
这是非常推荐的正确做法,你可以提前算好统一的间距参数,比如4个UIImageView垂直排列的话,每个视图的Y坐标就可以用初始Y值 + i*(图片视图高度 + 垂直间距)直接计算;16个UILabel如果是每个图片视图对应4个横向排列的标签,就可以用外层循环变量i和内层循环变量j分别计算X、Y坐标,完全不用硬写每个元素的位置,后期调整间距、尺寸也只需要改一次参数即可。是否需要为每个循环序号单独编写对应代码?
完全不需要,除非不同序号对应的视图有特殊的样式、内容差异。你当前的需求是批量生成规则布局的同类视图,布局逻辑完全统一,只需要用循环变量计算位置、设置对应内容就可以,单独给每个序号写分支逻辑只会产生冗余代码,还容易出bug,后续维护也麻烦。
内容的提问来源于stack exchange,提问作者Kseniia Piskun
相关产品推荐
相关产品推荐

