Swift Custom NavBar Back Button Image and Text

后端 未结 12 1311
谎友^
谎友^ 2021-01-30 10:40

I need to customise the look of a back button in a Swift project.

Here\'s what I have:

Here\'s what I want:

I\'ve tried creating my own UIBarButtonItem

12条回答
  •  悲哀的现实
    2021-01-30 10:55

    swift 4

    In my case, I needed to have only the image of the button, without any text. I hope this will be useful to someone.

    let imgBackArrow = UIImage(named: "back_arrow_32")
    
    navigationController?.navigationBar.backIndicatorImage = imgBackArrow
    navigationController?.navigationBar.backIndicatorTransitionMaskImage = imgBackArrow
    
    navigationItem.leftItemsSupplementBackButton = true
    navigationItem.leftBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: self, action: nil)
    

    For iOS 12 you can do

    func setNavigationBar() {
    
        self.navigationItem.setHidesBackButton(true, animated:false)
    
        //your custom view for back image with custom size
        let view = UIView(frame: CGRect(x: 0, y: 0, width: 40, height: 40))
        let imageView = UIImageView(frame: CGRect(x: 10, y: 10, width: 20, height: 20))
    
        if let imgBackArrow = UIImage(named: "icn_back_arrow") {
            imageView.image = imgBackArrow
        }
        view.addSubview(imageView)
    
        let backTap = UITapGestureRecognizer(target: self, action: #selector(backToMain))
        view?.addGestureRecognizer(backTap)
    
        let leftBarButtonItem = UIBarButtonItem(customView: view ?? UIView())
        self.navigationItem.leftBarButtonItem = leftBarButtonItem
    }
    
    @objc func backToMain() {
        self.navigationController?.popViewController(animated: true)
    }
    

提交回复
热议问题