iOS Swift 4 状态栏 - 禁用半透明

Posted

技术标签:

【中文标题】iOS Swift 4 状态栏 - 禁用半透明【英文标题】:iOS Swift 4 Status bar - disable Translucent 【发布时间】:2019-06-27 00:00:00 【问题描述】:

我试图让我的 ios (webView) 应用的状态栏不是半透明的。

我在 func viewDidLoad() 中试过这个:

self.navigationController?.navigationBar.isTranslucent = false

这在 appDelegate 中:

    UINavigationBar.appearance().isTranslucent = false
    UINavigationBar.appearance().backgroundColor = .white

这是我在滚动页面时得到的..

【问题讨论】:

你有导航栏吗?从你的截图中看不出来 视情况而定,您的视图锚定到 superview 而不是更好的 safeArea。这将解决它。但您可能想要不同类型的行为。 检查你的约束。 scrollView TopConstraint 必须锚定到 SafeArea 而不是 superView 【参考方案1】:

Swift 5.1 iOS 13.0 以防当前的弃用...

 if #available(iOS 13.0, *) 

            let window = UIApplication.shared.windows.filter $0.isKeyWindow.first
            let statusBarFrame = window?.windowScene?.statusBarManager?.statusBarFrame

            let statusBarView = UIView(frame: statusBarFrame!)
            self.view.addSubview(statusBarView)
            statusBarView.backgroundColor = .green
         else 
            //Below iOS13
            let statusBarFrame = UIApplication.shared.statusBarFrame
            let statusBarView = UIView(frame: statusBarFrame)
            self.view.addSubview(statusBarView)
            statusBarView.backgroundColor = .green
        

【讨论】:

【参考方案2】:

您无法更改状态栏的这些属性。您只能设置 .default、.lightContent。但是,如果您愿意,您可以在其下方放置一个视图,该视图不是半透明的并且具有背景色。像这样的:

let statusBarFrame = UIApplication.shared.statusBarFrame
let statusBarView = UIView(frame: statusBarFrame)
self.view.addSubview(statusBarView)
statusBarView.backgroundColor = .green

那可以进入你的viewDidLoad()ViewController方法

【讨论】:

【参考方案3】:

当我尝试将视图从上方滑入屏幕时,这为我解决了这个问题,但在动画时没有在状态栏上看到它:

view.clipsToBounds = true

【讨论】:

【参考方案4】:

我不认为你可以玩状态栏半透明。但是,您可能想隐藏它。将以下代码粘贴到您的 ViewController 中:

override var prefersStatusBarHidden: Bool 
  return true

如果它不起作用,请检查您的Info.plist,如果您的状态栏外观是基于 ViewController 的。添加这个:

<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>

【讨论】:

以上是关于iOS Swift 4 状态栏 - 禁用半透明的主要内容,如果未能解决你的问题,请参考以下文章

无法将状态栏颜色更改为半透明黑色 [重复]

防止Safari上的半透明URL和状态栏

iOS 7状态栏半透明,具有向后兼容性

unity部分模型半透明了怎么办

如何使iOS中的PhoneGap状态栏半透明?

使用 react-native 在 iOS 中设置半透明状态栏