UIPresentationController не вызывает containerViewWillLayoutSubviews до отображения

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

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

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


person ima747    schedule 25.04.2017    source источник
comment
Я думаю, что этот вопрос может помочь, stackoverflow.com/questions/32792202/   -  person riadhluke    schedule 25.04.2017
comment
Спасибо, действительно помогает!   -  person ima747    schedule 25.04.2017


Ответы (1)


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

Мое решение находится в моем меню prepareForSegue

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

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

person ima747    schedule 25.04.2017