UINaviagtionBar 子视图在 UIViewController "Back" 过渡期间不会淡出



我有一个基于uinavigationbar的应用。我已经创建了一个带有一些标题的自定义Uiview,并将其添加为导航栏的子视图:

[self.navigationController.navigationBar addSubview:_navbarView];

一切正常,直到我点击导航栏中的后退按钮,并且发生UiviewController过渡。

问题在于,我的自定义视图不会像uinavigationbar中的其他元素那样消失,它只是保持不变并在过渡完成后消失。我希望它像Uinavigationbar的本机元素一样在过渡过程中消失,有什么方法可以实现这一目标吗?

如果您在导航栏中添加一个子视图,则它将仅留在那里;导航控制器不知道要对此做任何特别的事情。您说您的自定义视图具有"一些标题" - 您尝试这样做吗?

self.navigationItem.titleView = _navbarView;

然后,导航控制器知道应使用该视图代替控制器的标题,并且应该在内外进行动画。

如果那不起作用,您需要考虑成为导航控制器的代表。由于ios7,这可能会变得很复杂。

如果您需要自定义导航栏,那么使用自定义Uinavigationbar创建Uinavigation Controller是一个好主意

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

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

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

最新更新