导航栏中的中心图片

时间:2018-09-26 12:45:45

标签: ios swift xcode jsqmessagesviewcontroller

我正在调用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 :(得分:2)

您确定问题出在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

答案 1 :(得分:0)

您实际上需要获取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