Если кому-то интересно, как этого добиться в iOS 7+, вот решение (также совместимое с iOS 6)
В Objective-C
[self.navigationBar setBackgroundImage:[UIImage new]
forBarMetrics:UIBarMetricsDefault];
self.navigationBar.shadowImage = [UIImage new];
self.navigationBar.translucent = YES;
В Swift 3 (iOS 10)
self.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationBar.shadowImage = UIImage()
self.navigationBar.isTranslucent = true
В быстром 2
self.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)
self.navigationBar.shadowImage = UIImage()
self.navigationBar.translucent = true
Обсуждение
Установка translucent
на YES
на панели навигации помогает, из-за поведения, описанного в документации UINavigationBar
. Я сообщу здесь соответствующий фрагмент:
Если вы установите это свойство на YES
на панели навигации с непрозрачным пользовательским фоновым изображением, панель навигации применит к изображению непрозрачность системы менее 1,0.