2011-07-14 30 views
0

我在我的應用程序中使用UIViewAnimationTransitionFlipFromLeft動畫更改視圖。與此同時,我更改UINavigationItem的內容以匹配新視圖,特別是titleViewrightBarButtonItem。由於我只知道動畫什麼時候開始,什麼時候完成,這似乎是唯一一次我可以更新UINavigationItem。在UINavigationBar中翻轉項目?

所以,我的問題:

  1. 是否有可能改變titleViewrightBarButtonItem以類似的方式,即。翻轉UIViewAnimationTransitionFlipFromLeft動畫?

  2. 如果沒有,是否有任何方法可以在視圖翻轉的中途更新UINavigationItem,而不是在動畫的開始或結束?

回答

0

可以解決1

你需要導航欄完全控制要做到這一點,所以你應該擺脫一個最有利用的:

self.navigationController.navigationBarHidden = YES; 

您的UIViewController,並把您可以使用自己的navBar視圖(它將有一個子視圖,即titleView和rightBarButtonItem)。這樣一來,你可以,你會任何其他的UIView使用翻轉這些觀點:

+[UIVIew setAnimationTransition:(UIViewAnimationTransition)transition forView:(UIView *)view cache:(BOOL)cache] 

+[UIVIew transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion] 

或等價的東西。希望這會有所幫助,如果您需要更多詳細信息,請聯繫我

+0

我會相信這個工程沒有嘗試過,但只是想知道,你有什麼想法,爲什麼這應該工作,並離開標準導航欄不? –

+0

是的,標準的UIKit導航欄會在titleView中執行一些操作(即:將其集中在其他事物中),因此您無法獲得所需的效果。 – pho0

0

如果您使用transitionWithView:duration:options:animations:completion:進行轉換,您將知道持續時間。這意味着您可以使用 performSelector:withObject:afterDelay:方法在完成一半轉換後運行方法。在這種方法中,您可以更新導航項目。

+0

我不huesforalice不同意,但問題是轉變這種觀點是不是因爲你的iOS假設不會改變類的內部行爲強大的解決方案(即使在今天該類取決於如何autocenters視圖過渡發生了,所以它沒有真正被設計成將這種效果應用於它)。 – pho0

+0

這是一個有趣的方法,很有意義。如果我無法獲得項目翻轉,我會試試這個。 –