2017-05-03 112 views
0

我尝试添加像这样的leftbarbuttonitem: enter image description hereLeftBarButtonItem位置不正确

与此代码:

let button = UIButton.init(type: .custom) 
     button.setImage(UIImage.init(named: "WhiteBackButton.png"), for: UIControlState.normal) 
     button.addTarget(self, action:#selector(self.backButtonSelected), for: UIControlEvents.touchUpInside) 
     button.frame = CGRect.init(x: 0, y: 0, width: 30, height: 30) 
     let barButton = UIBarButtonItem.init(customView: button) 
     self.navigationItem.leftBarButtonItem = barButton 

我使用这个图片: enter image description here

,并将其发送看起来像这样推倒:enter image description here

我如何阻止它从左边推得太远?

+0

它是一个真正的“后退”按钮,就像你做了pushVC一样,并且它想要做popVC,并且它有相同的颜色有标题(在你的屏幕截图和其他可能的导航按钮上不可见),没有什么更多了吗?因为如果是这样的话,您可能只需将previousvc.title重命名为'“”'就可以在推送该视图控制器之前执行该操作。 – Larme

+0

请确保您使用的图像没有空白 – janusbalatbat

+0

我确实确认图像没有空白 – user1079052

回答

0

WhiteBackButton.png图像最有可能在箭头前/周围有空白区域。

我建议还可以使用:

的UIBarButtonItem(图片:风格:目标:行动:)代替的UIButton将简化代码...

https://developer.apple.com/reference/uikit/uibarbuttonitem/1617163-init

如果你正在改变barButtonItems很多可以用下面的功能扩展视图控制器,并将它们添加到viewWillAppear中:

//should have a left and right of each: 
func addRightBarButtonWithImage(_ buttonImage: UIImage) { 
    let rightButton: UIBarButtonItem = UIBarButtonItem(image: buttonImage, style: UIBarButtonItemStyle.plain, target: self, action: #selector(self.toggleRight)) 
    navigationItem.rightBarButtonItem = rightButton 
} 


func setNavigationBarItem() { 
    self.addLeftBarButtonWithImage(UIImage(named: “icon.png”)!) 
    self.addRightBarButtonWithImage(UIImage(named: “icon.png”)!) 

} 

希望这有助于!干杯!

2

设negativeSpacer:的UIBarButtonItem =的UIBarButtonItem(barButtonSystemItem:UIBarButtonSystemItem.fixedSpace,目标:无,动作:无) negativeSpacer.width = -10 self.navigationItem.leftBarButtonItems = [negativeSpacer,leftBarButton]