Swift 以编程方式创建的 UIBarButtonItem 位置
Swift UIBarButtonItem position that was created programatically
我使用 SwiftIcons 创建了一个按钮,但图标的位置不正确。我添加负宽度来修复它:
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);
我使用 SwiftIcons 创建了一个按钮,但图标的位置不正确。我添加负宽度来修复它:
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);