如何删除 UIBarButtonItem 左侧的填充?

Far*_*ohi 3 uinavigationcontroller ios swift

我想使用自定义视图 作为 UINavigationController 中留下的 UIBarButtonItem,是否可以删除此处的左侧填充?

我已经尝试过了:

let  btn = UIButton()
btn.frame = CGRect(x: -50, y: -50, width: 44, height: 50)
btn.setImage(UIImage(name:"img").withRenderingMode(.alwaysTemplate), for: .normal)
btn.addTarget(self, action: #selector(openSetting), for: .touchUpInside)

let leftButtonBar = UIBarButtonItem(customView: btn)

self.navigationItem.leftBarButtonItems = ( [leftButtonBar , otherBtn ])
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如何删除剩余空间设置图标

更新。厌倦了这段代码:

let view = UIView(frame: CGRect(x: 0, y: 0, width: 50, height: 
view.backgroundColor = .gray
let  btn = UIButton()
btn.frame = CGRect(x: -15, y: 0, width: 44, height: 50)
btn.setImage(UIImage(name:"img").withRenderingMode(.alwaysTemplate), for: .normal)
btn.addTarget(self, action: #selector(DashboardTabBarController.openSetting), for: .touchUpInside)
view.addSubview(btn)
let leftButtonBar = UIBarButtonItem(customView: view)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

单击 btn 设置用户时出现此用户问题,其他问题标题导航未居中对齐

Kam*_*ran 7

您应该已经注意到,无论x您为自定义视图提供什么值,即btn,它总是从相同的位置开始,因为内部导航栏不会计入为该项目提供的位置,并且它始终设置内部定义的位置,如下图所示,我将背景颜色设置为自定义按钮以获得更好的视觉效果。

在此输入图像描述

因此,这里的技巧是将自定义按钮放入另一个容器视图中,如下所示,

let view = UIView(frame: CGRect(origin: .zero, size: CGSize(width: 200, height: 50)))
view.backgroundColor = .green
let  btn = UIButton(frame: CGRect(x: -10, y: 10 , width: 30, height: 30))
btn.setImage(UIImage(named: "cancelled")?.withRenderingMode(.alwaysTemplate), for: .normal)
btn.addTarget(self, action: #selector(openSetting), for: .touchUpInside)
btn.backgroundColor = .yellow
btn.tintColor = .red
view.addSubview(btn)

let  btn2 = UIButton(frame: CGRect(x: 20, y: 10, width: 30, height: 30))
btn2.setImage(UIImage(named: "cancelled")?.withRenderingMode(.alwaysTemplate), for: .normal)
btn2.contentMode = .scaleAspectFit
btn2.tintColor = .yellow
btn2.addTarget(self, action: #selector(openSetting), for: .touchUpInside)
view.addSubview(btn2)

let itemsContainer = UIBarButtonItem(customView: view)
self.navigationItem.leftBarButtonItems = [itemsContainer]
Run Code Online (Sandbox Code Playgroud)

这会导致这样的结果,

在此输入图像描述

现在,如果您更改x, y, width, heightof btn,它会相应调整。