首页 文章

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

提问于
浏览
0

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

[self.navigationController.navigationBar addSubview:_navbarView];

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

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

2 回答

  • 1

    如果您将子视图添加到导航栏,那么它将保留在那里;导航控制器不知道对它做什么特别的事情 . 你说你的自定义视图有“一些 Headers ” - 你试过这样做吗?

    self.navigationItem.titleView = _navbarView;
    

    然后导航控制器知道应该使用视图来代替控制器的 Headers ,它应该进出动画 .

    如果这不起作用,您需要考虑成为导航控制器的委托 . 从iOS7开始,这可能变得非常复杂 .

  • 0

    如果您需要自定义导航栏,最好使用自定义UINavigationBar创建UINavigationController

    - (instancetype)initWithNavigationBarClass:(Class)navigationBarClass toolbarClass:(Class)toolbarClass
    

    在您的导航栏类中,您可以实现

    - (UINavigationItem *)popNavigationItemAnimated:(BOOL)animated
    {
        if (animated) {
            //your_problem_view animation here
        }
        [super popNavigationItemAnimated];
    }
    

相关问题