navigationItem.setLeftBarButton()在旧版本上不起作用

时间:2018-07-18 15:08:39

标签: ios swift uinavigationitem

我正在使用pushViewController,例如以下代码:

let vc = A()   
self.navigationController?.pushViewController(vc, animated:true)

我想在打开的页面上添加一个NavigationItem。该代码适用于新版本,但在 iPhone 5(iOS 9.3)模拟器 iPad(10.3.3)上不起作用

class A: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        configureNavigationItem()
    }

    func configureNavigationItem() {
        let buttonLogo = UIButton(type: .custom)
        buttonLogo.setImage(UIImage(named: "logo"), for: .normal)
        buttonLogo.setTitle("", for: .normal)
        buttonLogo.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: -9, right: 0)
        let itemLogo = UIBarButtonItem(customView: buttonLogo)
        self.navigationItem.setLeftBarButton(itemLogo, animated: true)
    }

}

旧版本中没有任何内容。我该怎么解决?

2 个答案:

答案 0 :(得分:3)

问题是您的UIButton的大小为零。您需要给它一个尺寸!

buttonLogo.sizeToFit()
let itemLogo = UIBarButtonItem(customView: buttonLogo)

您的代码在iOS 11中运行的原因是它使用自动布局将按钮的大小设置为customView。但这是iOS 11的新功能。

答案 1 :(得分:-1)

使用“渲染模式”添加图像,如下所示。

let menuButtonImage = UIImage(named: "logo")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
buttonLogo.setImage(menuButtonImage, for: .normal)

然后检查