【血泪史】iOS内使用自定义Present动画之后可能导致导航栏异常问题

简述

     在使用自定义present动画之后再present其它页面,有可能造成dismiss之后app导航栏异常,如导航动画缺失,屏幕点击无响应,navigation表现异常等一些疑难杂症的表现。解决该问题主要有以下几个排查思路:

检查自定义动画是否正确调用声明周期函数

检查在自定义动画中是否正确调用

// 动画开始   

[fromViewController beginAppearanceTransition:NO animated:YES];   

[toViewController beginAppearanceTransition:YES animated:YES];

// 动画结束           

[fromViewController endAppearanceTransition];           

[toViewController endAppearanceTransition];           

[transitionContext completeTransition:!transitionContext.transitionWasCancelled];

     以上代码必定成对出现,即显示是要有,dismiss时也要有。

present的controller的modalPresentStyle,在fullscreen和overfullscreen之间选择,则尽量使用fullscreen。

系统级问题,无法解决,使用overfullscreen当自定义动画在dismiss的animated为false的情况下,由于没有执行disappear,会导致navigation的问题。除非新的自定义动画执行时不执行动画生命周期(上述代码),但这样往往带来业务问题。使用fullscreen则不会存在该问题。

你可能感兴趣的:(【血泪史】iOS内使用自定义Present动画之后可能导致导航栏异常问题)