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;
}
Что заставляет полноэкранные модальные презентации быть над полноэкранным, что приводит к тому, что меню не теряется, и, следовательно, не выкладывается анимация после увольнения.