以编程方式创建的Swift UIBarButtonItem位置

问题描述:

我使用SwiftIcons创建一个按钮,但该图标的位置不正确。我添加一个负宽度来修复它:以编程方式创建的Swift UIBarButtonItem位置

let menuButton = UIBarButtonItem() 
menuButton.setIcon(icon: .ionicons(.chevronLeft), iconSize: 24, color: .white, cgRect: CGRect(x: 0, y: 0, width: 24, height: 24), target: self, action: #selector(menuButtonClick)) 
let negativeSpacer:UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.fixedSpace, target: nil, action: nil) 
negativeSpacer.width = -13.7; 
self.navigationItem.leftBarButtonItems = [negativeSpacer, menuButton] 

这适用于iOS 10或更低版本,但在iOS 11上,宽度不带负值。
Image
我该如何解决这个问题?

答:

let menuButton = UIBarButtonItem(title: "", style: .plain, target: self, action: #selector(menuButtonClick)) 
menuButton.image = UIImage.init(icon: .ionicons(.chevronLeft), size: CGSize(width: 24, height: 24)) 
menuButton.imageInsets = UIEdgeInsetsMake(0, -13.7, 0, 0) 
self.navigationItem.leftBarButtonItem = menuButton 

也许你可以通过修改edgeInsets用这个方法您的按钮尝试:

UIEdgeInsets UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right); 

它允许您添加您barButtonItem一些填充。 这里是你如何与你的实际代码中使用它:

negativeSpacer.imageInsets = UIEdgeInsetsMake(0, -13.7, 0, 0); 
+0

施加到negativeSpacer或菜单按钮:( – rejjer

+0

正面和负面的价值观没有反应,但它的工作原理,当图标添加为barButton图像,谢谢! – rejjer