#ios #swift
Вопрос:
Я хочу удалить прозрачность строки состояния здесь то, что я пробовал до сих пор:
class ViewController: UIViewController { @IBOutlet var webview: WKWebView! override func viewDidLoad() { super.viewDidLoad() let statusBarFrame = UIApplication.shared.statusBarFrame let statusBarView = UIView(frame: statusBarFrame) self.view.addSubview(statusBarView) statusBarView.backgroundColor = .green } }
Ответ №1:
Не снимайте его. Не хочу его удалять. Строка состояния прозрачна. Примите факты и работайте с ними, а не против них.
Если вы хотите, чтобы область строки состояния выглядела зеленой, поместите за ней что-нибудь зеленое. Однако было бы лучше использовать навигационный контроллер и панель навигации, которая автоматически расширяет свой рисунок за строкой состояния.
Ответ №2:
Добавьте подвида в верхней части строки состояния с помощью statusBarManager
.
В ViewController:
class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() if let statusBarFrame = view.window?.windowScene?.statusBarManager?.statusBarFrame { let statusBarView = UIView(frame: statusBarFrame) view.addSubview(statusBarView) statusBarView.backgroundColor = .green } } }
Еще в SceneDelegate:
let statusBarFrame = UIApplication.shared.windows.filter {$0.isKeyWindow}.first?.windowScene?.statusBarManager?.statusBarFrame let statusBarView = UIView(frame: statusBarFrame) view.addSubview(statusBarView) statusBarView.backgroundColor = .green
Ответ №3:
Используйте этот код для изменения фона строки состояния
if (@available(iOS 13, *)) { let statusBarView = UIView() statusBarView.frame = UIApplication.shared.statusBarFrame statusBarView.backgroundColor = UIColor.green UIApplication.shared.keyWindow?.addSubview(statusBarView) }