NavigationController обрезает тень после пу sh и всплывает? - PullRequest
1 голос
/ 29 января 2020

У NavigationController возникает проблема, когда я добавляю пользовательский вид в навигационную панель, и у этого вида есть тень, тень отбрасывается при pu sh и появляется снова?

1: - ViewController A до pu sh

enter image description here

2: - ViewController B после пу sh

enter image description here

3: - ViewController A после pop

enter image description here

Это очень простой класс, содержащий только этот код

override func viewDidLoad() {
    super.viewDidLoad()

    let view : UIView = UIView(frame: CGRect(x: 0, y: 0, width: 300, height: 40))

    view.layer.shadowOpacity = 1
    view.layer.shadowOffset = CGSize(width: 1.0, height: 1.0)
    view.layer.shadowRadius = 20.0
    view.layer.shadowColor = UIColor.green.cgColor
    view.clipsToBounds = false
    view.layer.masksToBounds = false
    view.backgroundColor = UIColor.red

    self.navigationController?.navigationBar.topItem?.titleView = view
}

1 Ответ

0 голосов
/ 29 января 2020

На основании некоторого быстрого осмотра ...

.navigationBar имеет "contentView" .

При первоначальном появлении для этого ContentView .clipsToBounds установлено значение false.

После того, как вы sh V C поместите в стек, свойство .clipsToBounds этого ContentView становится true.

Вот почему вы изначально можете видеть тень.

Я думаю, вам нужно найти другой способ получить такой вид ... вы могли бы попробуйте создать подклассы, но Apple делает c прямо заявляют:

Разрешается настраивать внешний вид панели навигации с использованием методов и свойств класса UINavigationBar, но вы никогда не должны измените его рамки, границы или альфа-значения или измените его иерархию представления напрямую.

...