【问题标题】:navigationItem.setLeftBarButton() not working on old versionsnavigationItem.setLeftBarButton() 不适用于旧版本
【发布时间】:2018-07-18 15:08:39
【问题描述】:

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

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

我想向打开的页面添加一个导航项。此代码适用于新版本,但在 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)
    }

}

旧版本中没有任何内容。我该如何解决这个问题?

【问题讨论】:

    标签: ios swift uinavigationitem


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      然后检查

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-31
        • 1970-01-01
        • 2023-04-03
        相关资源
        最近更新 更多