Почему при использовании этого блока анимации UIView я вижу отрывистую анимацию? - PullRequest
0 голосов
/ 16 мая 2011

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

прости меня за то, что я говорил неформально ... Последние несколько часов я ломал голову, пытаясь понять это ...

-(void)flipToHelp {
 HelpViewController *helpVariable = [[HelpViewController alloc] initWithNibName:@"HelpView" bundle:nil];
 [self setHelpViewController:helpVariable];
 [UIView beginAnimations:@"flipview" context:nil]; 
 [UIView setAnimationDuration:0.5];
 [UIView setAnimationCurve:UIViewAnimationCurveLinear];
 [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft
 forView:_window cache:YES];

[_window removeFromSuperview];
[helpVariable release];
self.window.rootViewController = self.HelpViewController;
[UIView commitAnimations];
}

Ответы [ 2 ]

0 голосов
/ 17 мая 2011

Просто чтобы повторить из цепочки комментариев, вы не должны удалять окно из его суперпредставления (технически у него нет суперпредставления, поэтому оно, вероятно, вызывает проблемы). И установка свойства rootViewController окна должно поменять иерархию представлений, Очевидно, что рывок происходит от изменения свойства rootViewController окна, поэтому, возможно, решение состоит в том, чтобы избежать использования этого свойства. Вот что я думаю должно быть достаточно для достижения этой цели:

-(void)flipToHelp {
     HelpViewController *helpVariable = [[HelpViewController alloc] initWithNibName:@"HelpView" bundle:nil];
     [UIView beginAnimations:@"flipview" context:nil]; 
     [UIView setAnimationDuration:0.5];
     [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:_window cache:YES];
    [self.tabBarController removeFromSuperview];
    [_window addSubview:helpVariable];
    [UIView commitAnimations];
}
0 голосов
/ 17 мая 2011
-(void)flipToHelp {
  HelpViewController *helpVariable = [[HelpViewController alloc] initWithNibName:@"HelpView" bundle:nil];
  [self setHelpViewController:helpVariable];
  [helpVariable release];

  [UIView beginAnimations:@"flipview" context:nil]; 
  [UIView setAnimationDuration:0.5];
  [UIView setAnimationCurve:UIViewAnimationCurveLinear];
  [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft
                         forView:self.window
                           cache:YES];

  self.window.rootViewController = self.HelpViewController;
  [UIView commitAnimations];
}

Как насчет этого кода?У него все еще есть отрывистая анимация?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...