То, что вы видите, - это изменяющаяся непрозрачность вида вблизи начала и конца анимации, поэтому «тень», которую вы видите, на самом деле является задним окном.Хотя это может и не быть идеальным, быстрое решение состоит в том, чтобы изменить цвет фона вашего окна, чтобы он соответствовал цвету фона вашего конечного контроллера представления (затем установите его обратно после завершения перехода, если это необходимо).
т.е.
// 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;
// do the transition
[sourceViewController.navigationController pushViewController:destinationController animated:NO];
// 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;
}
});
Вам также необходимо переключить анимацию на слой sourceView:
[sourceViewController.view.layer addAnimation:transition forKey:nil];
Но на самом деле это всего лишь обходной путь, чтобы сделать его немного лучше.Вместо использования пользовательских сегментов раскадровки я бы очень рекомендовал использовать пользовательские аниматоры, которые дадут вам гораздо больший контроль над переходом анимации.
Мой ответ здесь: IOS / Objective-C:Можно ли использовать пользовательский сегмент в модальном переходе в отсутствие раскадровки Segue? содержит полный пример пользовательских аниматоров SlideUp / SlideDown.
А вот ссылки на документацию для него:
https://developer.apple.com/library/archive/featuredarticles/ViewControllerPGforiPhoneOS/CustomizingtheTransitionAnimations.html
https://developer.apple.com/documentation/uikit/uiviewcontrollertransitioningdelegate?language=objc
https://developer.apple.com/documentation/uikit/uiviewcontrolleranimatedtransitioning?language=objc