前言
之前写的一个转场动画库WXSTransition受到挺多开发者喜欢的。但是也存在着一些各种各样的问题,最近抽出一些时间对WXSTransition存在的一些问题进行修复。
其中比较明显的问题是在转场动画过程中,导航栏的存在让动画看起来不够顺畅,自然。导航栏的使用频率很高,所以这是一个比较大的问题。
解决
发现这个问题的第一个想法是要让导航栏做相应的动画,但是在实践过程中发现,确实有挺多坑,一个是导航栏相关API比较少,一个是要进行相对应的动画比较吃力不讨好。
最后采用一个性价比比较高的方案,在适合的时机隐藏、显示导航栏。
在- (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext
方法隐藏
在- (void)animationEnded:(BOOL) transitionCompleted
方法中显示。
效果如图:
其实在网上可以看到许多对转场过程中对导航栏的处理,可以根据自身的需求参照网上的方法进行导航栏自定义动画,例如渐变等。为了不与自定义动画冲突,我加上了autoShowAndHideNavBar
属性,将其设置为NO时边不会自动隐藏,显示,就不会与自定义动画冲突。
代码在我的Github上WXSTransion