我有一个基于UINavigationBar的应用程序。我创建了一个带有一些标题的自定义UIView,并将其作为子视图添加到导航栏:
[self.navigationController.navigationBar addSubview:_navbarView];
一切正常,直到我点击导航栏中的后退按钮并发生UIViewController转换。
问题是我的自定义视图不会像UINavigationBar中的其他元素一样消失,它只是保持不变并在转换完成时消失。 我希望它在过渡期间像UINavigationBar的原生元素一样消失,有没有办法实现这个目标?
答案 0 :(得分:1)
如果您将子视图添加到导航栏,那么它将保留在那里;导航控制器不知道对它做什么特别的事情。你说你的自定义视图有“一些标题” - 你试过这样做吗?
self.navigationItem.titleView = _navbarView;
然后导航控制器知道应该使用视图来代替控制器的标题,它应该进出动画。
如果这不起作用,您需要查看成为导航控制器的委托。从iOS7开始,这可能会非常复杂。
答案 1 :(得分:0)
如果您需要自定义导航栏,最好使用自定义UINavigationBar创建UINavigationController
- (instancetype)initWithNavigationBarClass:(Class)navigationBarClass toolbarClass:(Class)toolbarClass
您可以在导航栏类中实现
- (UINavigationItem *)popNavigationItemAnimated:(BOOL)animated
{
if (animated) {
//your_problem_view animation here
}
[super popNavigationItemAnimated];
}