Как я могу скрыть панель навигации через CAAnimation? - PullRequest
0 голосов
/ 08 октября 2011

На самом деле для показа / скрытия я использую анимацию UIView. И простые методы, такие как анимированные: ДА / НЕТ. Но это не дает мне плавного ответа .. Пожалуйста, дайте мне предложения ...

BOOL navBarState = [self.navigationController isNavigationBarHidden];


    [UIView beginAnimations:nil context:NULL];

    [UIView setAnimationDuration:0.3];


    [self.navigationController setNavigationBarHidden:!navBarState animated:NO];


    [UIView commitAnimations];

Это не дает мне удовлетворительного результата, я хочу сделать то же самое с CAAnimation ..

Ответы [ 2 ]

0 голосов
/ 08 октября 2011
CGRect rect = self.navigationController.navigationBar.frame;
    rect.origin.y = rect.origin.y < 0 ?
    rect.origin.y + rect.size.height
    :   rect.origin.y + rect.size.height;

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.2];
    self.navigationController.navigationBar.frame = rect;
    [UIView commitAnimations];

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

0 голосов
/ 08 октября 2011

Зачем вам нужно поместить следующую строку в фигурные скобки UIView:

[self.navigationController setNavigationBarHidden:!navBarState animated:NO];

Почему бы просто не назвать его анимированным: ДА без вызовов [UIView beginAnimation] / [UIView commitAnimation]?

[self.navigationController setNavigationBarHidden:!navBarState animated:YES];
...