UIViewController фоновое изображение, которое охватывает за панелью навигации? - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть интересная проблема, которую, я не уверен, можно решить стандартным способом:

У меня есть UIViewController с UIImageView, расположенным сверху, заподлицо с верхним пространством для контейнера. Стандартный материал.

Однако я хотел попытаться выяснить, есть ли способ получить его, чтобы изображение проходило и за панелью навигации (чтобы панель накладывалась поверх фонового изображения).

Я думал, что это невозможно, потому что изображение не может охватывать два контроллера вида. Я, конечно, могу иметь его на одном контроллере вида, и даже на панели навигации есть фоновое изображение, но я не могу сделать так, чтобы ОБА содержали одно и то же изображение, верно?

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

Любые идеи или это нарушает основы.

Редактировать: После попытки обоих предложений, он в конечном итоге делает это (в обоих случаях): https://imgur.com/a/RwALHac

Так что почти как верхняя полоса задается как одно изображение, а нижняя таблица - как изображение, но уменьшенная

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Сделать прозрачную панель навигации, чтобы увидеть фоновые изображения. Добавьте следующий код в расширение панели навигации.

func transparentNavigationBar() {
        self.navigationController!.navigationBar.setBackgroundImage(UIImage(),for: UIBarMetrics.default)
        self.navigationController?.navigationBar.shadowImage = UIImage()
        self.navigationController?.navigationBar.isTranslucent = true
        self.navigationController!.view.backgroundColor = UIColor.clear
        self.navigationController?.navigationBar.backgroundColor = UIColor.clear
    }
0 голосов
/ 08 ноября 2018

На самом деле это может быть довольно просто. Убедитесь, что у корневого контроллера вашего контроллера навигации его края расширены под верхними панелями (простой флажок в конструкторе интерфейсов), а затем сделайте панель навигации прозрачной с помощью этого кода:

navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationBar.shadowImage = UIImage()
.navigationBar.isTranslucent = true

Это заставит ваш контроллер представления (и, следовательно, его фоновое изображение) расширяться до верхней части экрана с перекрытием панели навигации. Сама панель навигации не будет видна, но ее содержимое будет (кнопки, заголовок и т. Д.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...