Swift Custom NavBar Back Button Image and Text
You can do something like that:
let yourBackImage = UIImage(named: "back_button_image")self.navigationController?.navigationBar.backIndicatorImage = yourBackImageself.navigationController?.navigationBar.backIndicatorTransitionMaskImage = yourBackImageself.navigationController?.navigationBar.backItem?.title = "Custom"
Your image will only have one color though
Note: Please remember that the back button belongs to the the source ViewController and not to the destination ViewController. Thus, the modification needs to be done in the source VC, which is reflected to all the view in the navigation controller
Code Snippet:
let backImage = UIImage(named: "icon-back")self.navigationController?.navigationBar.backIndicatorImage = backImageself.navigationController?.navigationBar.backIndicatorTransitionMaskImage = backImage/*** If needed Assign Title Here ***/self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.plain, target: nil, action: nil)
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 = imgBackArrownavigationController?.navigationBar.backIndicatorTransitionMaskImage = imgBackArrownavigationItem.leftItemsSupplementBackButton = truenavigationItem.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)}