navigationItem.setLeftBarButton() 不适用于旧版本
navigationItem.setLeftBarButton() not working on old versions
我正在像下面的代码一样使用 pushViewController:
let vc = A()
self.navigationController?.pushViewController(vc, animated:true)
我想向打开的页面添加一个导航项。此代码适用于新版本,但 不适用于 iPhone 5(iOS 9.3) Simulator 和 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)
}
}
旧版本没有出现。我该如何解决?
使用如下所示的渲染模式添加图像。
let menuButtonImage = UIImage(named: "logo")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
buttonLogo.setImage(menuButtonImage, for: .normal)
然后检查
问题是您的 UIButton 大小为零。你需要给它一个尺寸!
buttonLogo.sizeToFit()
let itemLogo = UIBarButtonItem(customView: buttonLogo)
您的代码在 iOS 11 中工作的原因是它使用自动布局将按钮的大小设置为 customView
。但这是 iOS 11 的新功能。
我正在像下面的代码一样使用 pushViewController:
let vc = A()
self.navigationController?.pushViewController(vc, animated:true)
我想向打开的页面添加一个导航项。此代码适用于新版本,但 不适用于 iPhone 5(iOS 9.3) Simulator 和 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)
}
}
旧版本没有出现。我该如何解决?
使用如下所示的渲染模式添加图像。
let menuButtonImage = UIImage(named: "logo")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
buttonLogo.setImage(menuButtonImage, for: .normal)
然后检查
问题是您的 UIButton 大小为零。你需要给它一个尺寸!
buttonLogo.sizeToFit()
let itemLogo = UIBarButtonItem(customView: buttonLogo)
您的代码在 iOS 11 中工作的原因是它使用自动布局将按钮的大小设置为 customView
。但这是 iOS 11 的新功能。