При переходе между двумя белыми контроллерами ViewController переход с плавным переходом становится черным - PullRequest
0 голосов
/ 09 ноября 2018

Я представляю следующий контроллер представления модально, используя переход с переходом, настроенным на перекрестное растворение, но хотя исходный VC и фон VC назначения являются белыми, экран становится черным в конце перехода, любой способ сделать это провал, чтобы очистить вместо черного? enter image description here

1 Ответ

0 голосов
/ 09 ноября 2018

Во-первых, хороший вопрос должен содержать ваш код или упрощенный пример кода, отображающий проблему, с которой вы столкнулись. 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

Ответ показывает пользовательский аниматор для анимации слайда вверх / вниз, но он должен дать вам четкое представление о том, как сделать это для перекрестного затухания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...