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()
}
}