在我的应用中,我有几个' 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张图片的位置?
更改循环以适应解决方案不会有问题。
我想避免删除所有子视图并在新位置重新创建它们,因为您可能会怀疑,绘制图像需要一些时间。删除所有子视图并为所有循环重新创建它们需要一秒钟,我需要它比这快得多(并且减少设备上的压力)。
我完全难过,迫切需要一些睡眠。任何帮助非常感谢。
答案 0 :(得分:0)
您可以创建一个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 设置在完全相同的位置 - 这是预期的还是还有更多您尚未显示的代码? ;)