在循环创建并使它们成为子视图后如何更改图像位置?
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 标记设置在完全相同的位置 - 是有意为之还是有更多代码尚未显示? ;)
在我的应用程序中,我有几个 '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 标记设置在完全相同的位置 - 是有意为之还是有更多代码尚未显示? ;)