ios – 交互式视图控制器解雇和更改statusBarStyle不兼容?

ios – 交互式视图控制器解雇和更改statusBarStyle不兼容?,第1张

概述我正在展示一个带有交互式消除过渡的模态UINavigationController.父视图控制器具有暗状态栏,模态视图控制器具有亮状态栏.我正在使用基于iOS 7视图控制器的状态栏外观配置. 只要我出现并且非交互式地关闭视图控制器,一切正常.但是,当我启动交互式关闭转换并取消它时,状态栏颜色仍然很暗. 我创建了一个sample project.点击“菜单”按钮,然后从右侧屏幕边缘平移开始交互式转换 我正在展示一个带有交互式消除过渡的模态UINavigationController.父视图控制器具有暗状态栏,模态视图控制器具有亮状态栏.我正在使用基于iOS 7视图控制器的状态栏外观配置.

只要我出现并且非交互式地关闭视图控制器,一切正常.但是,当我启动交互式关闭转换并取消它时,状态栏颜色仍然很暗.

我创建了一个sample project.点击“菜单”按钮,然后从右侧屏幕边缘平移开始交互式转换.

我试过的事情:

>在转换取消后,在涉及的任何导航和视图控制器上调用-setNeedsstatusBarappearanceUpdate
>将navigationbar.barStyle更改为UIbarStyleDefault并返回到UIbarStyleBlack

我还验证了我的模态导航控制器的statusbarStyle设置正确:

(lldb) p (UIStatusbarStyle) [[[[[UIApplication sharedApplication] keyWindow] rootVIEwController] presentedVIEwController] preferredStatusbarStyle](UIStatusbarStyle)  = UIStatusbarStylelightContent

状态栏仍为黑色.

还有什么可以尝试的吗?

解决方法 对我来说,这看起来像是UINavigationController中的一个错误( rdar://15902745).取消解雇后,UINavigationController不会再次查询其presentVIEwController的preferredStatusbarStyle,而是使用来自自身的preferredStatusbarStyle.我通过覆盖-childVIEwControllerForStatusbarStyle解决了这个问题:
- (UIVIEwController*)childVIEwControllerForStatusbarStyle {    if (self.presentedVIEwController) {        return self.presentedVIEwController.childVIEwControllerForStatusbarStyle;    }    return [super childVIEwControllerForStatusbarStyle];}

然后,为了在解雇期间(而不是之后)对变化进行动画处理,我还覆盖了-preferredStatusbarStyle.

我将解决方法推到了sample project.

总结

以上是内存溢出为你收集整理的ios – 交互式视图控制器解雇和更改statusBarStyle不兼容?全部内容,希望文章能够帮你解决ios – 交互式视图控制器解雇和更改statusBarStyle不兼容?所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/web/1107671.html

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

发表评论

登录后才能评论

评论列表(0条)

保存