У меня есть стандарт UISplitViewController
, с навигационными контроллерами как в его мастер-панели, так и в деталях. В большинстве случаев контроллер разделенного вида имеет свой preferredDisplayMode
, установленный на .allVisible
, так что видны мастер и детали.Настройка UISplitViewController's preferredDisplayMode при нажатии на подробную навигацию
Когда я нажимаю определенный контроллер просмотра на стек навигационной детали, я бы хотел скрыть мастер-панель, чтобы у пользователя было больше «полного экрана». Чтобы реализовать это, я попытался изменить preferredDisplayMode
на .primaryHidden
в viewWillAppear
контроллера подробного представления и изменить его обратно в viewWillDisappear
. Однако это приводит к очень плохой анимации и неправильному размещению просмотров в конце перехода.
Я не уверен, как это исправить. Я попытался изменить режим отображения в разное время, поставив вызов на изменение preferredDisplayMode
в блок анимации (хотя он и неявно анимирован), и попросил взглянуть на контроллер контроллера. Он выглядит немного лучше в блоке анимации, и представления в конечном итоге правильно размещены, но анимация по-прежнему выглядит странно и нервно.
Итак, как исправить анимацию и достичь внешнего вида, который я ищу?
Я собрал minimal sample project, чтобы продемонстрировать проблему. Просто нажмите кнопку «Push» в контроллере подробного представления, чтобы представить контроллер вида, который перенастраивает контроллер разделенного представления.