Как сделать прозрачную панель навигации? iOS 11 Swift 4 Xcode 9

На картинке справа то, что мне нужно, а слева то, что я получаю:

1

Я пытаюсь сделать прозрачную панель навигации, и в книге, которую я читаю, написано, что все, что вам нужно сделать, это вставить этот код в метод viewDidLoad() предпочтительного View Controller:

navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationController?.navigationBar.shadowImage = UIImage()
navigationController?.navigationBar.tintColor = .white

tableView.contentInsetAdjustmentBehavior = .never

Но все, что я получаю, это белая панель навигации. Также если написано, что разница баров на картинке в этом коде:

tableView.contentInsetAdjustmentBehavior = .never

Но это не работает для меня

Я загрузил окончательный проект главы этой книги, и там все работает нормально, хотя я пытался скопировать и вставить код, и все равно ничего не изменилось.

А дело в том, что я уже пытался вставить этот код:

navigationController?.navigationBar.isTranslucent = true

Но это не работает

Если это важно, книга называется «Начало программирования iOS 11» от AppCoda.


person bolt    schedule 31.01.2018    source источник
comment
@AbhishekMitra не полностью, проблема, на которую вы ссылаетесь, связана с использованием .appearance, который используется для всего приложения. В данном случае это для одного ViewController.   -  person Ethenyl    schedule 31.01.2018


Ответы (2)


Используйте следующий код:

navigationController?.navigationBar.isTranslucent = true

Надеюсь, это поможет вам.

Изменить (ОБНОВЛЕНИЕ)

Используйте приведенный ниже код:

navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
navigationController?.navigationBar.shadowImage = UIImage()
navigationController?.navigationBar.isTranslucent = false

ОБНОВЛЕНИЕ 2

override func viewDidAppear(_ animated: Bool) {

        navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
        navigationController?.navigationBar.shadowImage = UIImage()
        navigationController?.navigationBar.isTranslucent = true
        navigationController?.navigationBar.tintColor = .red
    }

Это должна быть работа.

person Abhishek Mitra    schedule 31.01.2018
comment
Я уже пробовал это. это не помогает - person bolt; 31.01.2018
comment
Я возвращаю кнопку «Назад», но полоса по-прежнему белая. - person bolt; 01.02.2018
comment
@ДмитрийМеньшиков Я думаю, что из-за твоего navigationController?.navigationBar.tintColor = .white спокойствия, сделай это navigationController?.navigationBar.tintColor = .clear и дай мне знать. - person Abhishek Mitra; 01.02.2018
comment
При изменении этого кнопка «Назад» снова исчезает, а панель навигации остается белой. - person bolt; 01.02.2018
comment
Я уже пытался расширить изображение в раскадровке, но результат тот же - person bolt; 01.02.2018
comment
@ДмитрийМеньшиков моя ошибка navigationController?.navigationBar.isTranslucent = true это должно быть правдой. Я пробовал себя и работал отлично .. - person Abhishek Mitra; 01.02.2018
comment
@ДмитрийМеньшиков Используйте этот код в override func viewDidAppear(_ animated: Bool) - person Abhishek Mitra; 01.02.2018
comment
По-прежнему получайте белую панель навигации с кнопкой «Назад». Через несколько минут я попытаюсь поделиться своим проектом Xcode. - person bolt; 01.02.2018
comment
@ДмитрийМеньшиков Заблокируйте весь свой код, который вы получили отсюда, и сделайте мое новое обновление 2 в ответ. Спасибо - person Abhishek Mitra; 01.02.2018
comment
Я получаю только красные буквы. Больше ничего не меняется - person bolt; 01.02.2018
comment
@ДмитрийМеньшиков да, это для оттенка. в любом случае позвольте мне поделиться этим проектом с вами. он работает нормально. - person Abhishek Mitra; 01.02.2018
comment
@ДмитрийМеньшиков вот вам проект: drive.google .com/file/d/1DIsqlbbRclC3ViixnL0RQSp95FMeq--a/ - person Abhishek Mitra; 01.02.2018
comment
Хорошо Мой проект drive.google.com/drive/folders/ - person bolt; 01.02.2018
comment
@ДмитрийМеньшиков убедитесь, что самый верхний вид, который вы добавляете, верхний предел не должен быть установлен в безопасную область, он должен быть установлен для просмотра. Тогда приведенный выше код работает нормально. - person Chetan Rajagiri; 04.10.2018
comment
Обновление 2 помогло на iOS 12 Swift 4 для iPhone XR. - person papesky; 18.03.2019

Проверьте этот код

  override func viewWillAppear(_ animated: Bool) {
        self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
        self.navigationController?.navigationBar.shadowImage = UIImage()
        self.navigationController?.navigationBar.isTranslucent = true
    }
    override func viewWillDisappear(_ animated: Bool) {
        self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
        self.navigationController?.navigationBar.shadowImage = UIImage()
        self.navigationController?.navigationBar.isTranslucent = false     
    }
person Khawar Islam    schedule 31.01.2018
comment
я загружаю ваш проект, но отсутствует main.stroyboard и некоторые другие файлы - person Khawar Islam; 01.02.2018