iOS 分享 sheet/extension 不褪色状态栏

iOS share sheet/extension not fading status bar

我有一个分享 sheet/extension,出于某种原因,状态栏没有淡出(即使它淡出屏幕的其余部分)。我附上了一张图片来演示这个问题。我只是想让整个屏幕淡出,包括状态栏。过去,我遇到过类似的问题,UIAlertControllers 没有淡化状态栏。

您是否在呈现 UIAlertController 并将 animated: 设置为 true?我无法使用 buo.showShareSheet() 方法重现此问题:

 let buo = BranchUniversalObject(canonicalIdentifier: "referrer/\(UUID().uuidString)")
        buo.title = "Test"
        buo.contentDescription = "Test"

        let lp: BranchLinkProperties = BranchLinkProperties()
        lp.feature = "referral"
        lp.addControlParam("user_id", withValue: UUID().uuidString)

        buo.showShareSheet(with: lp, andShareText: instructionString, from: self) { (params, success) in

        }

因为我认为这是一个应用程序范围的问题,所以我开始查看我的 AppDelegate 而不是单独的视图控制器。我发现一个函数 setStatusBarBackgroundColor(color: UIColor.white) 在应用程序启动时调用,这似乎是原因。

func setStatusBarBackgroundColor(color: UIColor) {
    guard let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView else { return }
    statusBar.backgroundColor = color
}

坦率地说,我不确定为什么要写这个,但删除它似乎可以完全解决问题。

我认为最好只在必要时 UIViewControllers(需要时)使用

进行调整
override var preferredStatusBarStyle: UIStatusBarStyle {
    return UIStatusBarStyle.default  //dark content
}

或关于育儿UINavigationController,以避免您遇到的上述错误。