Как добавить вид в верхней части панели навигации - PullRequest
0 голосов
/ 24 апреля 2019

Как добавить вид над панелью навигации?У меня есть пользовательский контроллер навигации, и я хочу представить вид над панелью навигации (как на экране), поэтому он должен быть виден на других ViewControllers

Было бы замечательно, если бы решение было на раскадровке.Like that

Попытка добавить в UIWindow не помогла.

1 Ответ

1 голос
/ 24 апреля 2019

Swift 4.2, Xcode 10 +

Хорошо, из того, что я могу сказать (через ответ на ваш комментарий, хотя он еще не ясен на 100%), лучшим решением для вашего вопроса было бы сделатьпанель навигации прозрачна, так что под ней можно увидеть любые представленные на контроллере контроллеры представления.Для этого я бы предложил следующее расширение UIViewController:

extension UIViewController {    
    func setupTransparentNavigationBarWithBlackText() {
        setupTransparentNavigationBar()
        //Status bar text and back(item) tint to black
        self.navigationController?.navigationBar.barStyle = .default
        self.navigationController?.navigationBar.tintColor = .black
    }

    func setupTransparentNavigationBarWithWhiteText() {
        setupTransparentNavigationBar()
        //Status bar text and back(item) tint to white
        self.navigationController?.navigationBar.barStyle = .blackTranslucent
        self.navigationController?.navigationBar.tintColor = .white
    }

    func setupTransparentNavigationBar() {
        self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
        self.navigationController?.navigationBar.shadowImage = UIImage()
        self.navigationController?.navigationBar.backgroundColor = .clear
        self.navigationController?.navigationBar.isTranslucent = true
    }
}

Использование любого из первых двух методов в viewWillAppear ваших подклассов UIViewController позволит вам сделать панель навигации полностью прозрачнойс текстом состояния Bar + индикаторы Wi-Fi / батареи черного или белого цвета по желанию.После этого вы можете отобразить что-нибудь в на панели навигации, закрепив ваши ограничения на view.bounds.topAnchor.Например, для прозрачного навигационного контроллера с белым statusBar текстом:

class YourViewController: UIViewController {
    override func viewWillAppear(_ animated: Bool) {
        setupTransparentNavigationBarWithWhiteText()
    }
}
...