【问题标题】:Swift UIBarButtonItem position that was created programatically以编程方式创建的 Swift UIBarButtonItem 位置
【发布时间】:2017-10-01 00:59:42
【问题描述】:

我使用 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

【问题讨论】:

    标签: swift uibarbuttonitem ios11


    【解决方案1】:

    也许您可以尝试使用此方法修改按钮的 edgeInsets:

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

    它允许您在 barButtonItem 上添加一些填充。 以下是如何将它与实际代码一起使用:

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

    【讨论】:

    • 对应用于negativeSpacer或menuButton的正负值均无反应:(
    • 但是它可以工作,当图标添加为 barButton 的图像时,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-09
    相关资源
    最近更新 更多