Если я правильно понимаю ваш случай, что произойдет так:
вы создадите новое изображение в createNewImage
;
thisИзображение анимируется с помощью метода:
-(void)Animation{
imageView.center = CGPointMake(imageView.center.x + X, imageView.center.y + Y);
}
, который анимирует ваш imageView
ivar;
при создании нового изображения, через 2 секунды вы переназначаете егона imageView
ivar, так что метод Animation
может анимировать его при вызове;
в то же время, вы потеряли ссылку на свое предыдущее изображение, которое выраньше анимировали, поэтому анимация больше не будет анимировать.
Теперь я предлагаю изменить Animation
следующим образом:
-(void)Animation{
for (UIView* imgView in self.view.subviews) {
imgView.center = CGPointMake(imgView.center.x + X, imgView.center.y + Y);
}
}
Итак,это просто оживит любое подпредставление вашего основного вида.Если ваши единственные подпредставления - это изображения, которые вы хотите анимировать, все должно быть в порядке.
РЕДАКТИРОВАТЬ:
Из вашего описания в комментариях, мне кажется, что происходит то, что addSubview
имеет эффект короткой остановки всех анимаций.Я не знаю, связано ли это с загрузкой изображений с диска, но я помню, что у меня тоже была похожая проблема.Единственный подход, который я вижу, - это предварительно создать и предварительно добавить все нужные вам UIImageViews (или максимальное количество разрешенных изображений), сделать их скрытыми, а затем снова сделать их видимыми один за другим.Это сделало бы логику вашей программы более сложной, но она бы работала.
Другой подход мог бы использовать CALayer
с вместо UIVIew
с.Лучше всего было бы использовать CABasicAnimation для анимации ваших изображений.
Если вы хотите использовать UIImageView, вы можете получить [imageView layer]
и добавить это вместо представления, например:
[[self.view layer] addSublayer:[imageView layer]];
но я не уверен, что этот подход сработает.
Надеюсь, что это поможет.