如何在创建循环并将其设置为子视图后更改图像位置?

时间:2015-05-31 08:51:00

标签: ios objective-c uiimageview

在我的应用中,我有几个' 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张图片的位置?

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

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

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

1 个答案:

答案 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 设置在完全相同的位置 - 这是预期的还是还有更多您尚未显示的代码? ;)