Центрировать изображение на панели навигации - PullRequest
0 голосов
/ 26 сентября 2018

Я вызываю JSQMessageViewController и добавляю изображение в качестве заголовка, но оно не центрируется из-за смещения, вызванного левой кнопкой Back.

enter image description here

Вот мой код для добавления изображения:

let imageView = UIImageView()
    imageView.frame.size.width = 40
    imageView.frame.size.height = 40
    imageView.contentMode = .scaleAspectFit
    let image = UIImage(named: "avatar_example")
    imageView.image = image
    navigationItem.titleView = imageView

Спасибо :)

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Вы уверены, что проблема в JSQMessageViewController?Возможно, вам просто нужно использовать стандартные размеры из заголовка (44 * 44) для выравнивания.

    let imageView = UIImageView(image: UIImage(named: "avatar_example"))
    imageView.contentMode = .scaleAspectFit
    let titleView = UIView(frame: CGRect(x: 0, y: 0, width: 44, height: 44))
    imageView.frame = titleView.bounds
    titleView.addSubview(imageView)

    self.navigationItem.titleView = titleView
0 голосов
/ 26 сентября 2018

Вам нужно получить ширину и высоту UINavigationBar и соответственно отцентрировать изображение.Попробуйте это

    guard let bar = navigationController.navigationBar else { return }
    let bannerWidth = bar.frame.size.width
    let bannerHeight = bar.frame.size.height

    // centers image vertically & horizontally
    let bannerX = bannerWidth / 2 - imageView.frame.width / 2
    let bannerY = bannerHeight / 2 - imageView.frame.height / 2

    imageView.frame = CGRect(x: bannerX, y: bannerY, width: bannerWidth, height: bannerHeight)
    imageView.contentMode = .scaleAspectFit

    navigationItem.titleView = logoImageView
...