ios – 仅在模态显示的视图控制器上隐藏状态栏

ios – 仅在模态显示的视图控制器上隐藏状态栏,第1张

概述我有一个视图控制器A,显示状态栏在顶部.从该视图控制器我想呈现隐藏状态栏的另一个视图控制器B.为了实现这一点,我重写了属性 override var prefersStatusBarHidden: Bool { return true} 在B.为了在状态栏(dis)出现时强制执行平滑动画我也覆盖了属性 override var preferredStatusBarUpdateAnimat 我有一个视图控制器A,显示状态栏在顶部.从该视图控制器我想呈现隐藏状态栏的另一个视图控制器B.为了实现这一点,我重写了属性

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 – 仅在模态显示的视图控制器上隐藏状态栏所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1067784.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存