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 状态栏 - 禁用半透明的主要内容,如果未能解决你的问题,请参考以下文章