Анимация не запускается без обновления просмотра - PullRequest
2 голосов
/ 09 июня 2011

Образец на GitHub

У меня странная проблема.

У меня есть приложение на основе навигации с двумя UIViewControllers и эффектом Curl для перехода между ними.

Я добавляю в панель кнопку и добавляю настраиваемое действие:

-(IBAction)pushPage
{
    NSLog(@"push page");
    SecondViewController *secondView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
    [UIView beginAnimations:@"animation" context:nil];
    [UIView setAnimationDuration:0.75];
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.navigationController.view cache:NO];
    [self.navigationController pushViewController:secondView animated:NO];
    [UIView commitAnimations];  
    [secondView release];
}

В SecondView у меня есть кнопка с действием:

-(IBAction)back
{
    [imageAnimationIssueAppDelegate backPage];
}

Метод backPage в AppDelegate:

-(void)backPage
{
    NSLog(@"backPage");
    [UIView beginAnimations:@"animation" context:nil];
    [UIView setAnimationDuration:0.75];
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.navigationController.view cache:NO];
    [self.navigationController popToRootViewControllerAnimated:NO];
    [UIView commitAnimations]; 
}

ПРОБЛЕМА: На RootView у меня UIImageView с анимацией:

- (void)viewDidLoad
{
    [super viewDidLoad];

    animImage.animationImages = [NSArray arrayWithObjects:
                             [UIImage imageNamed:@"1.png"],
                             [UIImage imageNamed:@"2.png"],
                             [UIImage imageNamed:@"3.png"],
                             [UIImage imageNamed:@"4.png"],                                 
                             [UIImage imageNamed:@"3.png"],
                             [UIImage imageNamed:@"2.png"],
                             nil];
    animImage.animationDuration = 0.5;
    animImage.animationRepeatCount = 0;
}

Я запускаю его в viewDidAppear:

- (void)viewDidAppear:(BOOL)animated
{
    NSLog(@"First view - viewDidAppear");
    [super viewDidAppear:animated];
    [animImage startAnimating];
}

Я останавливаюсь в viewDidDisapear:

- (void)viewDidDisappear:(BOOL)animated
{
    NSLog(@"First view - viewDidDisappear");
    [super viewDidDisappear:animated];
    [animImage stopAnimating];    
}

Когда я возвращаюсь из SecondView, анимация останавливается! Но [animImage isAnimating] скажи YES! Он не запускается без обновления экрана - вы можете нажать кнопку внизу и увидеть его!

Это ошибка?

Анимация работает без пользовательских переходов.

Когда я устанавливаю animated:YES для просмотра в режиме push или pop, анимация работает с пользовательскими переходами между представлениями.

Почему? Есть ли простой способ обновить отображаемый вид для запуска анимации?

Ответы [ 2 ]

1 голос
/ 09 июня 2011

Я думаю, что вы должны написать

 [yellowBatterfly startAnimating]; 

в методе viewDidLoad. и измените метод с

viewDidAppear для просмотраWillAppear и

viewDidDisappear для просмотраWillDisappear.

Надеюсь, что это будет работать ...

0 голосов
/ 09 июня 2011

Я думаю, что вы должны выполнить анимацию для вида, используя:

[UIView commitAnimations]
...