#ios #swift
#iOS #swift
Вопрос:
Я пытаюсь установить цвет строки состояния, используя приведенный ниже код, но он становится на 1 тон темнее сам по себе
extension UIViewController {
func setStatusBar(backgroundColor: UIColor) {
let statusBarFrame: CGRect
if #available(iOS 13.0, *) {
statusBarFrame = view.window?.windowScene?.statusBarManager?.statusBarFrame ?? CGRect.zero
} else {
statusBarFrame = UIApplication.shared.statusBarFrame
}
let statusBarView = UIView(frame: statusBarFrame)
statusBarView.backgroundColor = backgroundColor
view.addSubview(statusBarView)
}
}
Я все проверил. приведенный ниже вид имеет альфа-версию 1.0. в строке состояния нет наложения. Как я могу сделать ее того же цвета?
Заранее спасибо.
Редактировать:
Ответ №1:
Попробуйте это :
extension UIApplication {
var statusBarUIView: UIView? {
if #available(iOS 13.0, *) {
let tag = 38482
let keyWindow = UIApplication.shared.windows.filter {$0.isKeyWindow}.first
if let statusBar = keyWindow?.viewWithTag(tag) {
return statusBar
} else {
guard let statusBarFrame = keyWindow?.windowScene?.statusBarManager?.statusBarFrame else { return nil }
let statusBarView = UIView(frame: statusBarFrame)
statusBarView.tag = tag
keyWindow?.addSubview(statusBarView)
return statusBarView
}
} else if responds(to: Selector(("statusBar"))) {
return value(forKey: "statusBar") as? UIView
} else {
return nil
}
}
}
Использование:
UIApplication.shared.statusBarUIView?.backgroundColor = .red
Комментарии:
1. Не повезло. все еще один темный тон. откуда это становится темным цветом, я не знаю.
2. Есть ли какой-либо другой способ, с помощью которого я могу сделать его того же цвета, что и вид ниже?
3. Я использую это в своих проектах, я думаю, что место, где вы вызываете эту функцию, имеет значение, попробуйте в viewDidAppear