翻转UINavigationBar中的项目?

时间:2011-07-14 08:05:40

标签: iphone objective-c uinavigationbar

我的应用中有一个部分,我正在使用UIViewAnimationTransitionFlipFromLeft动画更改视图。同时,我更改UINavigationItem的内容以匹配新视图,特别是titleViewrightBarButtonItem。因为我只知道动画何时开始并且已经完成,所以这似乎是我可以更新UINavigationItem的唯一时间。

所以,对我的问题:

  1. 是否可以以类似的方式更改titleViewrightBarButtonItem,即。翻看UIViewAnimationTransitionFlipFromLeft动画?

  2. 如果没有,有什么方法可以在视图翻转的中途更新UINavigationItem,而不是在动画的开头或结尾处更新?

2 个答案:

答案 0 :(得分:0)

如果您使用transitionWithView:duration:options:animations:completion:进行转换,则会知道持续时间。这意味着你可以使用 performSelector:withObject:afterDelay:方法在完成一半转换后运行方法。在此方法中,您只需更新导航项即可。

答案 1 :(得分:0)

你可以解决1。

你需要完全控制导航栏才能这样做,所以你应该摆脱那里使用的那个:

self.navigationController.navigationBarHidden = YES;
在你的UIViewController上

并在那里放置你自己的navBar视图(它有一个subview,它是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]

或类似的东西。希望这有帮助,如果您需要更多详细信息,请告诉我。