Строка состояния в iOS становится темнее сама по себе

#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

Ответ №2:

К сожалению, это была проблема из XCode. Я установил тот же цвет с точно такими же значениями в swift вместо раскадровки, и это сработало очень хорошо.

Подтверждено то же самое в контроллере с несколькими представлениями.

введите описание изображения здесь