2011-09-30 32 views

回答

16

沒有包含此值的常數。然而,使用以下方法UINavigationControllerDelegate

- (void) navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
{ 
    startTime = [[NSDate date] retain]; 
} 

- (void) navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
{ 
    NSLog(@"Duration %f", [[NSDate date] timeIntervalSinceDate: startTime]); 
} 

...我可以看到,持續時間爲約0.35秒

有趣的是,視圖的不同部分採用不同的次過渡到位。看到這個精彩的博客貼子瞭解更多詳情:

http://www.iclarified.com/12396/a-closer-look-at-iphone-transition-animations

+0

很棒的博客文章!感謝您的鏈接。 – morais

+29

在iOS 8上,動畫持續時間似乎爲'0.2秒'。 (現在有一個你可以參考的常量:'UINavigationControllerHideShowBarDuration'。) – zekel

+1

這個評論應該是一個答案,它幫了我很多次 – fpg1503

14

的iOS 7,以後你可以通過設置UINavigationController委託和使用該方法具有準確值:

- (void)navigationController:(UINavigationController *)navigationController 
     willShowViewController:(UIViewController *)viewController 
        animated:(BOOL)animated { 
    NSTimeInterval duration = [viewController.transitionCoordinator transitionDuration]; 
} 

這是未來如果不確定的時間會改變的話。目前它的價值是0.35秒。