2011-10-08 145 views
0

其實對於顯示/隱藏我正在使用UIView動畫。 和簡單的方法,如動畫:YES/NO。 但它並沒有給我平滑的響應.. 請給我建議...如何通過CAAnimation隱藏導航欄?

BOOL navBarState = [self.navigationController isNavigationBarHidden]; 


    [UIView beginAnimations:nil context:NULL]; 

    [UIView setAnimationDuration:0.3]; 


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


    [UIView commitAnimations]; 

它不給我滿意的結果,我想要做CAAnimation同樣的事情..

+0

請告訴我們,你已經嘗試了什麼代碼,以及當前正在做的事情。沒有任何例子,你的問題非常模糊。 – Krumelur

回答

0

爲什麼您需要將下面一行放入UIView的動畫括號:

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

爲什麼不直接用動畫把它叫做:是不調用[UIView的beginAnimation]/[UIView的commitAnimation]?

[self.navigationController setNavigationBarHidden:!navBarState animated:YES]; 
0
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]; 

只需使用上面的代碼可以幫助你得到流暢的動畫......