Ну, вы уже можете разместить изображение на панели, так что теперь нужно просто изменить размер представления, чтобы оно соответствовало желаемой позиции.
Сделайте это путем изменения размера фрейма UIImage
, так как изменение размера только UIImageView
не работает на панели навигации (см. здесь ).
Редактировать: После некоторых экспериментов мне удалось сделать то, что вы хотите.Это немного нелепо, и вам, возможно, придется определить правильные значения размера для себя, но мне удалось добиться этого представления:
![the logo positions at the correct point](https://i.stack.imgur.com/9zWVb.png)
Этоэто было сделано путем добавления UIView
под названием «контейнер» как titleView
, который затем содержал UIImageView
.В то время как «контейнер» в основном ограничен «верхней» частью панели, содержащийся UIImageView
теперь может свободно перемещаться внутри панели навигации.Вы можете видеть, как это немного хак-у:
![the logo is right over the usual title text, the container is black](https://i.stack.imgur.com/8POgn.png)
На этом изображении вы можете видеть, что контейнер UIView
имеет черный фоновый цвет,Он не может расти выше определенного размера как titleView
.Проверка иерархии видов показывает, как расположен логотип:
![view hierarchy](https://i.stack.imgur.com/T8TE5.png)
Это было достигнуто с помощью следующего кода:
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
и экспериментировать оттуда.Все дело в ручном поиске правильных значений кадра методом проб и ошибок.