【发布时间】:2023-04-05 18:10:01
【问题描述】:
与此类似: How to make a Navigation Bar and Status Bar blurred (UIBlurEffect)? iOS, Swift 3
但我们只想将 UIBlurEffect 应用于 StatusBar,而不是导航栏。这可能吗?
【问题讨论】:
标签: ios swift uikit uinavigationbar uistatusbar
与此类似: How to make a Navigation Bar and Status Bar blurred (UIBlurEffect)? iOS, Swift 3
但我们只想将 UIBlurEffect 应用于 StatusBar,而不是导航栏。这可能吗?
【问题讨论】:
标签: ios swift uikit uinavigationbar uistatusbar
您可以通过以下代码获取您的状态栏视图,然后尝试添加到视觉效果,如here
let statWindow = UIApplication.shared.value(forKey:"statusBarWindow") as! UIView
let statusBar = statWindow.subviews[0] as UIView
// statusBar.backgroundColor = UIColor(red: 23 / 255.0, green: 0 / 255.0, blue: 154 / 255.0, alpha: 0.7)
statusBar.backgroundColor = UIColor(red: 213 / 255.0, green: 0 / 255.0, blue: 0 / 255.0, alpha: 0.7)
【讨论】:
let statWindow = UIApplication.shared.value(forKey:"statusBarWindow") as! UIView
let statusBar = statWindow.subviews[0] as UIView
statusBar.backgroundColor = UIColor.clear
let blur = UIBlurEffect(style:.dark)
let visualeffect = UIVisualEffectView(effect: blur)
visualeffect.frame = statusBar.frame
//statusBar.addSubview(visualeffect)
visualeffect.alpha = 0.5
self.view.addSubview(visualeffect)
试试这个
【讨论】:
iOS 14/iOS 13 解决方案:您可以通过 viewDidLoad 中的以下代码来获得 statusBar 模糊效果:
override func viewDidLoad() {
super.viewDidLoad()
let blurryEffect = UIBlurEffect(style: .regular)
let blurredStatusBar = UIVisualEffectView(effect: blurryEffect)
blurredStatusBar.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(blurredStatusBar)
blurredStatusBar.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
blurredStatusBar.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
blurredStatusBar.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
blurredStatusBar.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true }
【讨论】: