#ios #uinavigationcontroller #uinavigationbar #shadow #uinavigationbarappearance
#iOS #uinavigationcontroller #uinavigationbar #тень #появление панели навигации
Вопрос:
У меня есть 2 экрана с общим контроллером навигации и общей панелью навигации. На первом экране не должно быть разделителя, на втором должен быть разделитель пользовательского цвета.
Код, который я пробовал:
1)
navigationController?.navigationBar.shadowImage = ...//some image with an appropriate color
let appearance = UINavigationBarAppearance()
appearance.shadowImage = navBarSeparatorColor.as1ptImage()
navigationController?.navigationBar.scrollEdgeAppearance = appearance
Кажется, первый фрагмент кода работает для ios 12, и это все. Ничего не работает для iOS 13 или 14.
Примечание: есть несколько похожих вопросов, но их «решения» не работают для iOS 13, а для iOS 14 вообще нет вопросов.
Ответ №1:
Я думаю, что на iOS 13 вам нужно установить внешний вид объекта внутри navigationBar
, например:
class FirstViewController: UIViewController {
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.navigationBar.standardAppearance.shadowColor = .clear
}
}
class SecondViewController: UIViewController {
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.navigationBar.standardAppearance.shadowColor = .red
}
}
Пожалуйста, обратите внимание, что есть и другие появления: compactAppearance
и scrollEdgeAppearance
. Вместо shadowColor
этого вы также можете установить shadowImage
.
Комментарии:
1. спасибо, уже пробовал это. Проблема в том, что на iOS 13/14 есть постоянная темная линия. Вы увидите это, если установите
shadowColor
любой цвет с прозрачностью (напримерclear
)