我有一个标准的UISplitViewController
,在其主窗格和细节窗格中都有导航控制器。大多数情况下,拆分视图控制器都preferredDisplayMode
设置为 ,.allVisible
以便主视图和细节视图都可见。
当我将特定的视图控制器推送到详细信息导航堆栈时,我想隐藏主窗格,以便用户拥有更多的“全屏”视图。为了实现这一点,我尝试将详细视图控制器的更改preferredDisplayMode
为.primaryHidden
in viewWillAppear
,然后将其更改回viewWillDisappear
. 然而,这会导致非常糟糕的动画,并且在过渡结束时错误地放置了视图。
我不确定如何解决这个问题。我已经尝试在不同的时间更改显示模式,将调用更改preferredDisplayMode
为动画块(尽管它无论如何都是隐式动画的),并要求视图控制器的视图将自己放回原处。它在动画块中看起来好一点,并且视图最终正确放置,但动画仍然有点奇怪和跳跃。
那么,如何修复动画并实现我正在寻找的外观?
我整理了一个最小的示例项目来演示这个问题。只需单击详细视图控制器中的“推送”按钮,即可显示重新配置拆分视图控制器的视图控制器。
animation uinavigationcontroller uisplitviewcontroller ios swift