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

修改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则不存在这个问题。

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,226评论 4 61
  • 谁为你解了 传说中的封印 让你滴水成荫 在硕大的叶片里徜徉 清皙是你的样子 生长是不畏风雨的行程 切开解剖者的胸膛...
    江城妖怪阅读 3,335评论 5 4
  • 今天是我们信阳焦点团队第五次读书会。是由潢川的张红老师主持的。张老师只参加了两期读书会,就被我邀请做主持人,然后勇...
    息县心协沐风f阅读 2,312评论 2 2
  • 1、push()在数组最后添加一个或多个项,返回添加数据后数组的length。 var arr=["a","b",...
    虎帅锅阅读 1,170评论 0 0
  • 统一战线 亲爱的战友 我们向着永恒开炮 勇气叠加去对抗整个世界 只有你我,别怕 自己助威,自己摇旗呐喊 qtmd生...
    e98c59136768阅读 3,385评论 0 0