我有一个视图控制器A
,显示顶部的状态栏。从该视图控制器中,我想显示隐藏状态栏的另一个视图控制器B
。为了实现这一点,我推翻了该属性只在模态显示的视图控制器上隐藏状态栏
override var prefersStatusBarHidden: Bool {
return true
}
on B
。为执行每当状态栏(DIS)出现的平滑动画我还重写属性
override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
return .slide
}
然而,当我现在本视图控制器B
从A
状态栏消失突然而A
仍然可见,右在动画模态转换开始之前。
我正在寻找一种方法来修复这个“跳跃状态栏”行为。理想情况下,我想有一个干净的分离:
A
:显示状态栏B
:不显示状态栏
,这样,当我提出B
,状态栏由它覆盖。
由于状态栏似乎是一个全球视图,并不是属于对于任何特定的视图控制器,可能很难实现这种行为。因此,如果无法复制这种确切的动画行为,那么如果状态栏在视图控制器转换期间顺利滑出,我也会很高兴。我怎样才能做到这一点?
感谢您的回答。其中一半有效,另一半(解散视图控制器时“相反”)不适用。您似乎需要向参与转换的_both_视图控制器添加代码,以便为状态栏获得平滑的滑入和滑出动画。稍后我会添加另一个答案来解释这种方法。苹果真的很烦人,因为它使得这个过程变得如此复杂,并且不会自动为状态栏添加动画 - 我声称在99%的情况下,这就是开发者想要的行为。 – Mischa
对不起,我应该澄清“对面”更好!我认为可能会发生。过渡回来似乎也会有点棘手。我想你可能需要使用'viewWillDisappear'和'viewWillAppear',并确保你在设置标志之前移动到需要隐藏状态栏的视图控制器。我也会更新我的答案。 – Samantha
@Samantha谢谢它帮助我... –