UIViewController“后退”过渡期间,UINaviagtionBar 子视图不会淡出
Posted
技术标签:
【中文标题】UIViewController“后退”过渡期间,UINaviagtionBar 子视图不会淡出【英文标题】:UINaviagtionBar subview doesn't fade out during UIViewController "Back" transition 【发布时间】:2014-03-10 18:15:04 【问题描述】:我有一个基于 UINavigationBar 的应用程序。我创建了一个带有一些标题的自定义 UIView 并将其作为子视图添加到导航栏:
[self.navigationController.navigationBar addSubview:_navbarView];
一切正常,直到我点击导航栏中的后退按钮并发生 UIViewController 转换。
问题是我的自定义视图不会像 UINavigationBar 中的其他元素一样消失,它只是保持不变并在转换完成时消失。 我希望它在过渡过程中像 UINavigationBar 的原生元素一样消失,有什么方法可以实现吗?
【问题讨论】:
【参考方案1】:如果你在导航栏上添加一个子视图,那么它就会一直呆在那里;导航控制器不知道对它做任何特别的事情。您说您的自定义视图有“一些标题” - 您是否尝试过这样做?
self.navigationItem.titleView = _navbarView;
然后导航控制器知道应该使用视图来代替控制器的标题,并且它应该动画进出。
如果这不起作用,您需要考虑成为导航控制器的委托。从 ios7 开始,这可能会变得相当复杂。
【讨论】:
完美答案!将它添加为 navigationItem 的 titleView 提供了我正在寻找的动画。很好的解释和解决方案!【参考方案2】:如果您需要自定义导航栏,最好使用自定义 UINavigationBar 创建 UINavigationController
- (instancetype)initWithNavigationBarClass:(Class)navigationBarClass toolbarClass:(Class)toolbarClass
您可以在导航栏类中实现
- (UINavigationItem *)popNavigationItemAnimated:(BOOL)animated
if (animated)
//your_problem_view animation here
[super popNavigationItemAnimated];
【讨论】:
这似乎是一个顺利的解决方案,但我应该在那个条件中输入什么代码? mi自定义view的淡出动画? 是的。自定义视图的淡出动画。以上是关于UIViewController“后退”过渡期间,UINaviagtionBar 子视图不会淡出的主要内容,如果未能解决你的问题,请参考以下文章
推送新的 UIViewController 时 UISearchController 消失
UIViewController 从 viewController 和后退按钮模态加载 UINavigationController [重复]
如何在 uiviewcontroller 的导航栏中添加后退按钮?