答案 0 :(得分:0)
首先,一个好的问题应该包含您的代码或简化的示例代码,以显示您遇到的问题。 gif有助于显示您所看到的内容,但是如果没有代码上下文,您将获得低票和更少的答案(加上收到的答案主要是猜测/假设,例如我的是)。
我的猜测是,您看到的是动画开始和结束时视图的不透明度不断变化,因此“当屏幕变黑时”您将看到后窗。尽管这可能并不完美,但一种快速的解决方法是更改窗口的背景颜色以使其与目标视图控制器的背景颜色匹配(然后在过渡完成后根据需要将其重新设置)。
// within your perform method for the transition
// hold onto the previous window background color
UIColor *previousWindowBackgroundColor = sourceViewController.view.window.backgroundColor;
// switch the window background color to match the destinationController's background color temporarily
sourceViewController.view.window.backgroundColor = destinationController.view.backgroundColor;
...
// perform the transition
// switch the window color back after the transition duration from above
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(animationDuration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// make sure we still have a handle on the destination controller
if (destinationController) {
destinationController.view.window.backgroundColor = previousWindowBackgroundColor;
}
});
通过创建自己的动画制作者来使用自定义动画过渡工作流程,如我在此处的答案所述:https://stackoverflow.com/a/52396398/7833793
答案显示了用于上/下滑动动画的自定义动画器,但是它也应该使您清楚地知道如何针对交叉淡入淡出进行动画处理。