Я использую панель инструментов UINavigationController
.Перед тем, как отобразить его, я изменяю размеры своих видов, чтобы они не блокировались панелью инструментов (я устанавливаю рамку вида текущего контроллера представления в прямоугольную область от нижней части navigationBar
до верхней части toolbar
.
Но не все мои контроллеры вида имеют toolbarItems
. Поэтому при переключении с контроллера вида, у которого есть элементы (контроллер A), на контроллер, у которого нет (контроллер B), я хочу скрытьпанель инструментов. Однако, когда я вызываю setToolbarHidden:animated:
в методе B's viewWillAppear:animated:
, панель инструментов анимируется вниз во время push-перехода и показывает фон UIWindow
позади него.
Это также происходит в обратном направлении:при переходе от B к A (с помощью кнопки «назад») я хочу, чтобы панель инструментов анимировалась, чтобы снова показать toolbarItems
A, но поскольку вид A не распространяется на нижнюю часть экрана, UIWindow
виден во времявсплывающий переход.
Возможно, это не самое лучшее описание, поэтому вот скриншот:
![Cmd-shift-3 rapid-fire FTW](https://i.stack.imgur.com/ht3JU.jpg)
Я попытался обновить кадр А в его viewWillDisappear:animated:
метод, но он делает странные вещи, так как он, кажется, вызывается в блоке push-анимации UINavigationController
.Любое понимание будет оценено.
Обновление : вместо этого я пытался скрыть панель инструментов в B viewDidAppear:animated:
, но результаты не были идеальными.При использовании этого решения панель инструментов не закрывается, пока не завершится push-переход.Поскольку B не имеет toolbarItems
, элементы A сдвигаются влево во время перехода, оставляя пустую панель инструментов на экране, прежде чем она исчезнет.Кроме того, при возврате к A фон UIWindow
будет виден, если я не установлю панель инструментов на видимость в B viewWillDisappear:animated:
, что будет означать, что B должен знать, что A имеет toolbarItems
.