导航栏后退按钮图像与屏幕边缘对齐

问题描述

有人知道我如何将后退按钮图像移动到屏幕边缘吗?

这是现在的样子:

how it looks like right now

这就是我想要的样子:

how I want it to be

解决方法

尝试更改其插图:

self.navigationController?.navigationBar.backItem?.backBarButtonItem?.imageInsets = UIEdgeInsets(top: 0,left: -12,bottom: 0,right: 12)

并找到将其右移到边缘的值。

,

如果将自定义视图添加为按钮并添加为leftBarButtonItem,则该视图将始终采用该视图的默认x(框架的起始位置)位置,这是为导航栏项目定义的。您可以添加类似这样的东西以获得所需的输出:

class AnotherViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        addBackButton()
    }
    

    func addBackButton() {
        
        let containerView = UIView(frame: CGRect(origin: .zero,size: CGSize(width: 200,height: 50)))
   
        let btnBack = UIButton(frame: CGRect(x: -25,y: 0,width: 45,height: 45))
        btnBack.setImage(UIImage(named: "dark_ic_back.png")?.withRenderingMode(.alwaysTemplate),for: .normal)
        btnBack.tintColor = .black
        btnBack.addTarget(self,action: #selector(self.backAction(_:)),for: .touchUpInside)
        containerView.addSubview(btnBack)

        self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: containerView)
    }
    
    @objc func backAction(_ sender: UIButton) {
        
       self.navigationController?.popViewController(animated: true)
    }
}

输出:

screenshot