美文网首页
自定义转场动画导致无法改变statusBar隐藏和颜色

自定义转场动画导致无法改变statusBar隐藏和颜色

作者: CoffeeKid | 来源:发表于2017-02-15 14:52 被阅读64次

    修改statusBar隐藏和颜色是通过重写prefersStatusBarHiddenpreferredStatusBarStyle这两个属性,并调用setNeedsStatusBarAppearanceUpdate()方法实现的。如果ViewController是嵌在TabBarController,NavigationController或者PageViewController中,则上述方法是无效的,这个网上很多文章都有详细说明。
    这里要说明的是一种出现比较少的情况,如果从VC1使用present的方式跳转到VC2,并且使用自定义动画(UIViewControllerAnimatedTransitioning),上述方法也是不会执行的。解决方法是在VC2初始化时把modalPresentationCapturesStatusBarAppearance设为true

    // This controls whether this view controller takes over control of the status bar's appearance when presented non-full screen on another view controller. Defaults to NO.
        @available(iOS 7.0, *)
        open var modalPresentationCapturesStatusBarAppearance: Bool
    

    这是这个属性的官方说明,这个属性决定VC在非全屏模式下被present时,是否接管statusBar外观的控制权,默认为NO。因为自定义动画属于非全屏的跳转,所以跳转以后的VC并没有获得statusBar外观的控制权,上面的方法就失效了,而不同的present则不存在这个问题。

    参考

    相关文章

      网友评论

          本文标题:自定义转场动画导致无法改变statusBar隐藏和颜色

          本文链接:https://www.haomeiwen.com/subject/tfsqwttx.html