UIPresentationController не вызывает containerViewWillLayoutSubviews до тех пор, пока не отобразится

У меня есть UIPresentationController отображение бокового меню над основным видом с фиксированной шириной 300. Затем из бокового меню пользователь может открыть полноэкранный модальный вид. Когда модальное представление отклонено, представление меню заполняет экран во время анимации отклонения (это неправильно). В конце анимации containerViewWillLayoutSubviews вызывается, и меню корректирует его ширину до 300.

Я реализую frameOfPresentedViewInContainerView, Я также реализую shouldPresentInFullscreen возврат NO в представлении меню (хотя это, кажется, не влияет ни на что, что я действительно могу определить).

Почему нет containerViewWillLayoutSubviews называется перед анимацией увольнения? Как мне поддерживать ширину представления меню, когда оно закрыто и открыто?

1 ответ

Решение

Спасибо riadhluke за то, что он направил меня в UIPresentationController, который изменяет размер, когда поверх него отображается другой контроллер представления.

Мое решение в моем меню prepareForSegue

UIViewController *destination = [segue destinationViewController];
if (destination.modalPresentationStyle == UIModalPresentationFullScreen) {
    destination.modalPresentationStyle = UIModalPresentationOverFullScreen;
}

Что заставляет полноэкранные модальные презентации быть над полноэкранным, что приводит к тому, что меню не теряется, и, следовательно, не выкладывается анимация после увольнения.

Другие вопросы по тегам