简述
在使用自定义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则不会存在该问题。
网友评论