
overrIDe var prefeRSStatusbarHIDden: Bool { return true} 在B.为了在状态栏(dis)出现时强制执行平滑动画我也覆盖了属性
overrIDe var preferredStatusbarUpdateAnimation: UIStatusBaranimation { return .slIDe} 但是,当我现在从A呈现视图控制器B时,状态栏突然消失,而A仍然可见,就在动画模式转换开始之前.
我正在寻找一种方法来解决这个“跳跃状态栏”的行为.理想情况下,我希望有一个干净的分离:
> A:显示状态栏
> B:不显示状态栏
这样,当我出现B时,状态栏就会被它覆盖.
由于状态栏似乎是一个不属于任何特定视图控制器的全局视图,因此可能很难实现这种行为.因此,如果不能复制这种精确的动画行为,我也很高兴如果状态栏在视图控制器转换期间平滑滑出.我怎样才能做到这一点?
解决方法 要在转换期间设置状态栏的动画,您可以在视图控制器B中执行以下 *** 作:var willAppear = falseoverrIDe var preferredStatusbarUpdateAnimation: UIStatusBaranimation { return .slIDe}overrIDe var prefeRSStatusbarHIDden: Bool { return willAppear}overrIDe func vIEwWillAppear(_ animated: Bool) { super.vIEwWillAppear(true) willAppear = true UIVIEw.animate(withDuration: 0.5) { self.setNeedsstatusBarappearanceUpdate() }} 然后我猜你需要做相反的事情,如果你想要在解除模态控制器时产生相反的效果.
您可以将动画的持续时间调整为适合您的任何时间,但我不确定vIEwWillAppear与模态控制器实际完全呈现之间的持续时间是否一致.
编辑:
“相反”最终成为这样的东西(在视图控制器A中):
var willAppear = falseoverrIDe var preferredStatusbarUpdateAnimation: UIStatusBaranimation { return .slIDe}overrIDe var prefeRSStatusbarHIDden: Bool { return willAppear}overrIDe func vIEwWilldisappear(_ animated: Bool) { super.vIEwWilldisappear(animated) if let _ = presentedVIEwController as? B { willAppear = true }}overrIDe func vIEwWillAppear(_ animated: Bool) { super.vIEwWillAppear(true) if let _ = presentedVIEwController as? B { willAppear = false UIVIEw.animate(withDuration: 0.5) { self.setNeedsstatusBarappearanceUpdate() } }} 我同意的是,对于我想象很多人想要的东西,代码太多了.
总结以上是内存溢出为你收集整理的ios – 仅在模态显示的视图控制器上隐藏状态栏全部内容,希望文章能够帮你解决ios – 仅在模态显示的视图控制器上隐藏状态栏所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)