代码之家  ›  专栏  ›  技术社区  ›  Hews

在导航栏中居中显示图像

  •  0
  • Hews  · 技术社区  · 6 年前

    我打电话给 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 回复  |  直到 6 年前
        1
  •  2
  •   Anton Rodzik    6 年前

    您确定问题出在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
    
        2
  •  0
  •   Dani iman kazemayni    6 年前

    你需要实际得到物体的宽度和高度 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