正文
目前看来,爱奇艺和bilibili貌似使用这个方式,具体表现为竖屏切横屏时,播放器动画完成后,statusBar无动画转为横屏;横屏切竖屏时,statusBar先无动画转为竖屏,然后才开始播放器动画。
这种方法的坑
问题
但是目前这个方法有一个问题,就是在横屏转竖屏时,画面偶尔会闪一下。
问题分析
画面偶尔会闪一下,是在默认的模式下,控制器的.modalPresentationStyle = UIModalPresentationStyle.fullScreen,此时,当控制器A present 出控制器B,完成present动作后,控制器B的view会添加进一个UITransitionView类型的View中(即我们在自定义转场动画时的transitionContext.containerView),UITransitionView是直接添加在Window上的,而控制器A的view会暂时从视图层级中移除。当无动画dimiss时,UITransitionView先从Window移除,然后控制器A的View在添加到window上,在这中间有可能会造成闪动。
所以只要保证完成present动作后,控制器A的view依然保持在视图层级中即可。
解决方案