Пользовательская панель навигации с фоном - PullRequest
0 голосов
/ 20 мая 2018

Поскольку я новичок в Swift и работаю над своим FYP, у меня есть несколько VC, и теперь я собираюсь добраться до нижеследующего VC с помощью .pushViewController (nextVC, animated: true).Я пытаюсь сделать панель навигации прозрачной, чтобы за панелью навигации отображалось фоновое изображение:

image

И в настоящее время моя панель навигации выглядит следующим образом:

image

вот мой код,

override func viewDidLoad() {
    super.viewDidLoad()

    //------
    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
    self.navigationController?.navigationBar.shadowImage = UIImage()
    self.navigationController?.navigationBar.isTranslucent = true
}

Надеюсь, что вы, ребята, понимаете мой вопрос.Любая помощь будет высоко оценена.Спасибо

1 Ответ

0 голосов
/ 21 мая 2018

После долгой борьбы я получил решение своей проблемы.Вы можете сказать, что это сложно, но может помочь вам с Xcode 9 и более поздними версиями и swift 4.

Что касается моего Вопроса, я подхожу к этому VC с помощью pushViewController (), поэтому, когда я достигаю этогоVC, просто я использую здесь ViewWillAppear (), чтобы изменить мой NavBar, и после перехода от этого VC к предыдущему VC или любому другому контроллеру, так что мне нужно сбросить исходную навигацию, чтобы вернуться к ее первоначальному стилю, для этой цели я используюviewWillDisappear ().

Шаг 1:

override func viewWillAppear(_ animated: Bool) {

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

}
override func viewWillDisappear(_ animated: Bool) {

    super.viewWillDisappear(animated)
    self.navigationController?.navigationBar.shadowImage = nil
    self.navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
    self.navigationController?.navigationBar.isTranslucent = true

}

Шаг 2:

Для увеличения высоты панели навигации, ядобавили пробелы в приглашении к элементу навигации, а также установили координату y на -20, чтобы достичь NavBar в верхней части строки состояния под панелью навигации из раскадровки.

Шаг 3: последний и последний

Я установил альфа-значение в панели навигации из раскадровки: 0,5

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

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

...