【问题标题】:Custom UIButton as Navigation Item Back Button working, but does not show自定义 UIButton 作为导航项返回按钮工作,但不显示
【发布时间】:2016-12-20 14:18:09
【问题描述】:
let btnName = UIButton()
btnName.setImage(UIImage(named: "backIcon"), for: .normal)
btnName.addTarget(self, action: #selector(AddContactViewController.backAction), for: .touchUpInside)
let leftBarButton = UIBarButtonItem()
leftBarButton.customView = btnName
self.navigationItem.leftBarButtonItem = leftBarButton
它工作正常,它完成了预期的工作。但是,在导航项上它是不可见的。但是当我点击它应该在的区域时。它有效。
【问题讨论】:
标签:
swift
uibutton
swift3
uinavigationbar
uinavigationitem
【解决方案1】:
实际上,您可能有两个导航栏,一个属于您当前的班级,另一个属于您以前的班级。因此,您可以尝试在以前的班级中添加以下代码。
override func viewWillDisappear(_ animated: Bool) {
self.navigationController!.navigationBar.isHidden = true
}
我也遇到了同样的问题,它对我有用。可能会对你有所帮助。
【解决方案2】:
一切正常,只是您忘记为按钮设置框架,这就是它没有显示的原因。
let btnName = UIButton(frame: CGRect(x: 0, y: 0, width: 18, height: 17))
btnName.setImage(UIImage(named: "backIcon"), for: .normal)
btnName.addTarget(self, action: #selector(AddContactViewController.backAction), for: .touchUpInside)
let leftBarButton = UIBarButtonItem()
leftBarButton.customView = btnName
self.navigationItem.leftBarButtonItem = leftBarButton
【解决方案3】:
与其对某些帧值进行硬编码,不如在设置图像、标题等之后调用 sizeToFit() 方法。我今天遇到了这个问题,在 iOS11 上自定义后退按钮显示 OK,但不是在 iOS9 上可见。
btnName.sizeToFit()