热门标签 | HotTags
当前位置:  开发笔记 > IOS > 正文

如何在iOS13中更改状态栏Alpha?

如何解决《如何在iOS13中更改状态栏Alpha?》经验,为你挑选了2个好方法。

我想在iOS 13中更改状态栏Alpha。

let statusBarWindow = UIApplication.shared.value(forKey: "statusBarWindow") as? UIWindow
statusBarWindow?.alpha = 0.5

当我尝试此操作时,应用程序崩溃(线程1:信号SIGABRT)。



1> Douglas Hill..:

状态栏是由iOS 13上的系统进程(不在应用程序进程中)呈现的,因此应用程序无法更改此状态。(来源:在WWDC 2019实验室与UIKit工程师交谈。)

您可以在Apple Books应用程序中看到这一点,该应用程序过去曾在iOS 12上以暗模式将状态栏变暗,但在iOS 13上则不会发生这种情况。



2> 小智..:

由于未捕获的异常“ NSInternalInconsistencyException”而终止应用程序,原因:“在UIApplication上名为-statusBar或-statusBarWindow的应用程序:此代码必须更改,因为不再有状态栏或状态栏窗口。而是在窗口场景上使用statusBarManager对象。”

您可以参考以下答案来解决崩溃问题。

var statusBarUIView: UIView? {
        if #available(iOS 13.0, *) {
            let tag = 38482458
            if let statusBar = self.keyWindow?.viewWithTag(tag) {
                return statusBar
            } else {
                let statusBarView = UIView(frame: UIApplication.shared.statusBarFrame)
                statusBarView.tag = tag

                self.keyWindow?.addSubview(statusBarView)
                return statusBarView
            }
        } else {
            if responds(to: Selector(("statusBar"))) {
                return value(forKey: "statusBar") as? UIView
            }
        }
        return nil
    }

这些提到的解决方案为我工作。


推荐阅读
author-avatar
长沙祛疤--欣奕除疤_998
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有