Как использовать изображение в качестве заголовка на большой панели навигации? - PullRequest
0 голосов
/ 14 октября 2018

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

Я пытаюсь заменить «Все входящие» изображением.

enter image description here

В настоящий момент я получаю нечто подобное, используя self.navigationItem.titleView = UIImageView(image #i ageLiteral(resourceName: “logo pic”)) enter image description here

Примечание -текст заголовка «настройки» не появляется, но логотип / изображение в этом месте отображается как «логотип».(Я хочу, чтобы изображение / логотип были ниже и влево, как на первом рисунке)

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Я пытаюсь заменить «Все входящие» изображением

Ну, вы не можете.Большой заголовок - это заголовок;это текст.Это не может быть изображение.Представление заголовка может быть изображением, но оно идет в центре панели навигации.Снимок экрана, который вы показали, правильный;Вот как это должно выглядеть.Конец.Прекратите пытаться неправильно использовать рамки.

0 голосов
/ 14 октября 2018

Ну, вы уже можете разместить изображение на панели, так что теперь нужно просто изменить размер представления, чтобы оно соответствовало желаемой позиции.

Сделайте это путем изменения размера фрейма UIImage, так как изменение размера только UIImageView не работает на панели навигации (см. здесь ).

Редактировать: После некоторых экспериментов мне удалось сделать то, что вы хотите.Это немного нелепо, и вам, возможно, придется определить правильные значения размера для себя, но мне удалось добиться этого представления:

the logo positions at the correct point

Этоэто было сделано путем добавления UIView под названием «контейнер» как titleView, который затем содержал UIImageView.В то время как «контейнер» в основном ограничен «верхней» частью панели, содержащийся UIImageView теперь может свободно перемещаться внутри панели навигации.Вы можете видеть, как это немного хак-у:

the logo is right over the usual title text, the container is black

На этом изображении вы можете видеть, что контейнер UIView имеет черный фоновый цвет,Он не может расти выше определенного размера как titleView.Проверка иерархии видов показывает, как расположен логотип:

view hierarchy

Это было достигнуто с помощью следующего кода:

let logo = UIImage(named: "logo")

let container = UIView(frame: CGRect(x: 0, y: 0, width: 182, height: 132))
container.backgroundColor = UIColor.clear

let imageView = UIImageView(frame:  CGRect(x: -132, y: 2, width: 182, height: 132))
imageView.contentMode = .scaleAspectFit
imageView.image = logo

container.addSubview(imageView)

self.navigationItem.titleView = container

Как я уже сказал, это хакерский и, конечно, не предназначен Apple.Это решение может не работать в будущих версиях iOS.

Вы также можете установить width и height из container в 0 и экспериментировать оттуда.Все дело в ручном поиске правильных значений кадра методом проб и ошибок.

...