navigationItem.setLeftBarButton() 不适用于旧版本
Posted
技术标签:
【中文标题】navigationItem.setLeftBarButton() 不适用于旧版本【英文标题】:navigationItem.setLeftBarButton() not working on old versions 【发布时间】: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)
旧版本中没有任何内容。我该如何解决这个问题?
【问题讨论】:
【参考方案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)
然后检查
【讨论】:
以上是关于navigationItem.setLeftBarButton() 不适用于旧版本的主要内容,如果未能解决你的问题,请参考以下文章