【发布时间】:2023-04-05 08:10:01
【问题描述】:
if #available(iOS 11, *) {
let view = UIView()
view.frame = CGRect(x: 20, y: 0, width: 70, height: 50)
let btn: UIButton = UIButton(frame: CGRect(x:-14, y: 0, width: 30, height: 27))
btn.setBackgroundImage(UIImage(named: "BackArrow"), for: UIControlState());
btn.addTarget(self, action: #selector(ExampleController.barBtnBackAction), for: UIControlEvents.touchUpInside)
btn.center = CGPoint(x: btn.center.x,y :view.center.y)
let tap = UITapGestureRecognizer(target: self, action: #selector(ExampleController.barBtnBackAction))
view.addGestureRecognizer(tap)
view.isUserInteractionEnabled = true
view.backgroundColor = UIColor.black
view.addSubview(btn)
let leftButtonItem = UIBarButtonItem(customView: view)
self.navigationItem.leftBarButtonItem = leftButtonItem
}
我正在使用此代码在 iOS 11 的导航栏中设置后退按钮,但效果不佳?用户在点击后退按钮时遇到问题我无法使用默认值,因为我想要对其进行自定义操作,并且在 iOS 11 之前我正在使用此代码:-(以下为 iOS 10)它工作正常。
let barBtnNeg = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.fixedSpace, target: self, action: nil)
barBtnNeg.width = -15.0
let btn: UIButton = UIButton(frame: CGRect(x: 0, y: 0, width: 30, height: 27))
btn.setBackgroundImage(UIImage(named: "BackArrow"), for: UIControlState());
btn.addTarget(self, action: #selector(ExampleController.btnBackAction), for: UIControlEvents.touchUpInside)
let barBtnBack = UIBarButtonItem(customView: btn)
self.navigationItem.leftBarButtonItems = [barBtnNeg, barBtnBack]
如果我使用此代码,后箭头图像会向右移动(对齐错误),如果我减小帧静止图像的 x 轴,则不会移动,所以我必须使用上面的代码(如果 #available(iOS 11 , *))。
那么有什么解决方案可以通过自定义图像、自定义选择器(操作)和自定义对齐来解决后退按钮问题(导航栏)?
【问题讨论】:
标签: ios iphone swift uinavigationcontroller ios11