Поскольку вы не публикуете здесь весь свой код, я должен догадаться.
Вы создаете imageView в onTimer
, а затем пытаетесь переместить «их» в onTimer2
?
Если ДА, то
Поскольку вы всегда устанавливаете переменную imageView
для последнего изображения, созданного вами в методе onTimer
, при попытке переместить метод imageView
в onTimer2
выВы перемещаете только последний созданный вами файл.
Чтобы переместить каждый созданный вами imageView, вам лучше иметь for loop
в вашем методе onTimer2
.
Дополнительновам лучше создать NSMutableArray, чтобы сохранить все ваши imageViews, или вы можете использовать imageView.tag
, чтобы снова получить ваш imageView без необходимости создавать NSMutableArray и выпускать его позже.
Вот пример того, как использоватьNSMutableArray для сохранения и чтения всех ваших изображений:
Добавьте это в файл .h
вашего класса:
NSMutableArray *views;
NSMutableArray *XArray;
NSMutableArray *YArray;
Отредактируйте файл .m
:
...
//Create an array some where in your class:
views = [[NSMutableArray array] retain];
XArray = [[NSMutableArray array] retain];
YArray = [[NSMutableArray array] retain];
...
- (void)onTimer {
[XArray addObject:[NSNumber numberWithFloat:(240.0f - ix)/230.0f]];
[YArray addObject:[NSNumber numberWithFloat:(160.0f - iy)/230.0f]];
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.png"]];
[self.view addSubview:imageView];
[views addObject:imageView];
[imageView release];
}
//Read:
- (void)onTimer2 {
for (NSUInteger i = 0; i < [views count]; i++) {
UIImageView *imageView = [views objectAtIndex:i];
CGFloat X = [[XArray objectAtIndex:i] floatValue];
CGFloat Y = [[YArray objectAtIndex:i] floatValue];
CGPointMake(imageView.center.x + X, imageView.center.y + Y);
}
}
- (void)dealloc {
...
[views release];
[XArray release];
[YArray release];
...
}
Или вы можете использовать imageView.tag
вот так:
Добавьте это к классу .h
file:
NSInteger imageViewCount;
Отредактируйте .m
file:
...
#define kImageViewFirstTag 10000
...
...
//reset the count some where in your class if needed
imageViewCount = 0;
...
- (void)onTimer {
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.png"]];
[self.view addSubview:imageView];
[views addObject:imageView];
imageView.tag = kImageViewFirstTag + imageViewCount;
imageViewCount ++;
[imageView release];
}
//Read:
- (void)onTimer2 {
for (NSUInteger i = 0; i < imageViewCount; i++) {
UIImageView *imageView = (UIImageView *)[self.view viewWithTag:kImageViewFirstTag + i];
CGPointMake(imageView.center.x + X, imageView.center.y + Y);
}
}
Два кода скомпилированы мозгом, исправьте меня, если есть какой-либо опечатка.
Рекомендуется первый способ, потому что он имеет лучшую производительность.