在UIViewController“Back”转换期间,UINaviagtionBar子视图不会淡出

时间:2014-03-10 18:15:05

标签: ios uiviewcontroller uinavigationcontroller uinavigationbar subview

我有一个基于UINavigationBar的应用程序。我创建了一个带有一些标题的自定义UIView,并将其作为子视图添加到导航栏:

[self.navigationController.navigationBar addSubview:_navbarView];

一切正常,直到我点击导航栏中的后退按钮并发生UIViewController转换。

问题是我的自定义视图不会像UINavigationBar中的其他元素一样消失,它只是保持不变并在转换完成时消失。 我希望它在过渡期间像UINavigationBar的原生元素一样消失,有没有办法实现这个目标?

2 个答案:

答案 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];
}