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