UINavigationBar - prefersLargeTitles - 如何设置标题左侧的图像?

问题描述 投票:1回答:1

下面的文章显示了如何在导航标题的右侧添加图像。 https://blog.uptech.team/how-to-build-resizing-image-in-navigation-bar-with-large-title-8ba2e8bcb840

我想将图像添加到导航栏标题的左侧。为了实现它,我为imageView设置了leftAnchor,而不是如下所示。

imageView.leftAnchor.constraint(equalTo: navigationBar.leftAnchor, constant: Const.ImageRightMargin)

图像显示在导航栏标题上方,这不是我所追求的。我希望图像与标题位于同一行(标题左侧)。

注意:

  1. 我已经看到了关于在标题视图中添加图像的其他问题,但是这个问题专门请求有关在标题左侧添加图像的信息。因此,这个问题不重复。
  2. 我知道我可以像下面那样设置自定义标题视图,但我不想丢失导航栏的prefersLargeTitles设置。 self.navigationItem.titleView = customTitleView

任何帮助深表感谢。

ios swift uinavigationbar
1个回答
0
投票
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let img = UIImage.init(named: "imgName")

        let imgView = UIImageView(frame: CGRect(x: 0, y: 0, width: 30, height: 30))

        imgView.image = img!

        imgView.contentMode = .scaleAspectFit

        let item = UIBarButtonItem.init(customView: imgView)

        let negativeSpacer = UIBarButtonItem.init(barButtonSystemItem: .fixedSpace, target: nil, action: nil)

        navigationItem.leftBarButtonItems = [negativeSpacer, item]

    }
}

结果

enter image description here

如果要在单击图像时执行请求,请替换此行

let negativeSpacer = UIBarButtonItem.init(barButtonSystemItem: .fixedSpace, target: nil, action: nil)

那条线

let negativeSpacer = UIBarButtonItem.init(barButtonSystemItem: .fixedSpace, target: self, action: #selector(go))

放下这个

@objc func go() {

    print("go")
}
© www.soinside.com 2019 - 2024. All rights reserved.