Как установить навигационную панель назад стрелка и заголовок backBarButtonItem с различными цветами Swift - PullRequest
0 голосов
/ 02 октября 2018

Я пытаюсь установить детальную панель навигации контроллера вида с изображением стрелки и заголовком backBarButtonItem, как показано ниже

enter image description here

Я попытался добавить изображение стрелкикак показано ниже ..

let imgBackArrow = UIImage(named: "backArrow")
navigationController?.navigationBar.backIndicatorImage = imgBackArrow
navigationController?.navigationBar.backIndicatorTransitionMaskImage = imgBackArrow

Затем я пытаюсь установить заголовок черным цветом и несколькими строками (для более крупного текста), но ничего не помогает мне? .. *

    let customButton = UIBarButtonItem(title: eventName, style: UIBarButtonItem.Style.plain, target: self, action: nil)
customButton.tintColor = UIColor.black; //giving me black image as well
    self.navigationController?.navigationBar.topItem?.backBarButtonItem  = customButton

1 Ответ

0 голосов
/ 02 октября 2018

Просто создайте собственный класс для панели навигации.как customNavigationBar и xib для UIView, а в вашей xib взять кнопку, установить ее изображение, взять метку и дать ограничения ... И взять UIView на вашем ViewController и поместить его наверх и дать имя класса customNavigationBar

customNavigationBar class

 import UIKit

 class customNavigationBar: UIView {

 //Mark:- Iboutlets
 @IBOutlet weak var backButton: UIButton!
 @IBOutlet weak var titleLabel: UILabel!
 @IBOutlet var containerView: UIView!



 //Mark:- Lifecycle

 override init(frame: CGRect) {
 super.init(frame: frame)
 commonInit()
 }

 required init?(coder aDecoder: NSCoder) {
 super.init(coder: aDecoder)
 commonInit()
 }


 }
 //Mark:- Function

 extension customNavigationBar{
 private func commonInit(){
 Bundle.main.loadNibNamed("customNavigationBar", owner: self, options: nil)
 addSubview(containerView)
 containerView.frame = self.bounds
 containerView.autoresizingMask = [.flexibleHeight , .flexibleWidth]
 }
 }

Имя владельца вашего xib-файла должно быть customNavigationBar

Теперь в вашем классе ViewController

class ViewController: UIViewController{
@IBOutlet weak var navigationBar: customNavigationBar!

     override func viewDidLoad() {
            super.viewDidLoad()
            navigationBar.titleLabel.text = "Texas Rangers at"
            navigationBar.titleLabel.textColor = .blue
            navigationBar.backButton.addTarget(self, action : #selector(backButtonTapped), for: .touchUpInside)
        }

        @objc func backButtonTapped() {
        self.navigationController?.popViewController(animated: true)
    }

Теперь в этом представлении customNavigationBar вы можете использовать любойviewController нет необходимости каждый раз устанавливать панель навигации в каждом viewController

...