在循环创建并使它们成为子视图后如何更改图像位置?

How can I change image positions after creating in loop and making them subviews?

在我的应用程序中,我有几个 'for' 循环,如下所示:

for (int i = 0; i <= 100; i++)
    {
        cmMajorMarker = [[UIImageView alloc] initWithImage:image];
        cmMajorMarker.frame = CGRectMake(0, 0, widthVar,heighVar);
        cmMajorMarker.center = CGPointMake(xVar,yVar);
        [self.scrollView addSubview:cmMajorMarker];
    }

(小编辑:上面的代码被大大简化了,这就是为什么它看起来做的很少)

他们都做我想让他们做的事,就是每隔几个像素重复一个小黑笔。

当我想改变这些标记的位置时,我的问题就出现了。我只是想交换屏幕的一侧。

我正在用另一种方法来做,但我认为我只需要编写以下代码来更改创建的 100 张图像的位置:

cmMajorMarker.center = CGPointMake(xVar2, yVar2);

我应该意识到这只会改变创建的 100 张图片中最后一张的位置,而不是全部。

我的问题是如何更改循环中创建的所有 100 张图像的位置?

改变循环以适应解决方案不会有问题。

我想避免删除所有子视图并在新位置重新创建它们,因为您可能会怀疑,绘制图像需要一些时间。删除所有子视图并为所有循环重新创建它们需要超过一秒钟,我需要它比这快得多(并减少设备的压力)。

我完全被难住了,迫切需要一些睡眠。非常感谢任何帮助。

您可以创建一个 NSMutableArray 作为实例变量来保存标记并稍后再次迭代它们:

NSMutableArray *markerContainer = [NSMutableArray new];

然后将您当前的代码更改为

for (int i = 0; i <= 100; i++) {
    cmMajorMarker = [[UIImageView alloc] initWithImage:image];
    cmMajorMarker.frame = CGRectMake(0, 0, widthVar,heighVar);
    cmMajorMarker.center = CGPointMake(xVar,yVar);
    [self.scrollView addSubview:cmMajorMarker];
    [markerContainer addObject:cmMajorMarker];
}

如果你想改变所有这些的中心,你可以执行以下操作:

for (UIImageView *marker in markerContainer) {
    marker.center = CGPointMake(xVar2, yVar2);
}

注意:您当前的代码实际上将 ALL 标记设置在完全相同的位置 - 是有意为之还是有更多代码尚未显示? ;)