Выбор второй вкладки останавливает анимацию на первой вкладке и не перезапускается - PullRequest
4 голосов
/ 31 января 2012

Я создаю новый проект приложения с вкладками в Xcode 4.2, используя раскадровки.В viewDidLoad я добавляю следующий код:

[UIView animateWithDuration:30
                      delay:0
                    options:UIViewAnimationOptionRepeat | UIViewAnimationOptionCurveLinear
                 animations:^(void) {
                     CGRect imageViewFrame = self.scrollingImageView.frame;
                     imageViewFrame.origin.x = CGRectGetWidth(imageViewFrame) / -2;
                     self.scrollingImageView.frame = imageViewFrame;
                 } completion:nil];

Затем я создаю связанное свойство UIImageView и подключаю его в IB.

@property (nonatomic, strong) IBOutlet UIImageView *scrollingImageView;

Я помещаю изображение в изображение, запускаюэто в симуляторе или моем iPod Touch, и я вижу прокрутку.

Однако, когда я выбираю вторую вкладку и затем возвращаюсь к первой вкладке, анимация завершает то, что кажется немедленно, и я не могу получить егоперезапустить, даже если я поместил вышеупомянутое в viewWillAppear.Я искал много ответов и не могу их решить.

Любая помощь будет признательна.

1 Ответ

4 голосов
/ 06 августа 2012

Похоже, что проблема, с которой вы имеете дело, связана с контроллерами панели вкладок, а не с раскадровками или конкретной анимацией.Проблема в том, что при переключении на другую вкладку анимация останавливается, а когда вы возвращаетесь на первую вкладку, она не возобновляется.

Порядок повторного размещения анимации в viewWillAppear не работает (так какВы упомянули), но если вы сначала удалите анимацию в viewWillDisappear, то порядок ее повторения в viewWillAppear должен работать.Например,

- (void)viewWillDisappear:(BOOL)animated
{
    [self.view.layer removeAllAnimations]; // or whatever you need to use to remove your specific animation
}

Примечание: код удаления анимации должен быть в viewWillDisappear, а не в viewWillUnload, поскольку viewWillUnload не вызывается при переключении вкладок.

...