如何设置leftBarButtonItem的大小?

时间:2018-01-01 10:22:49

标签: ios iphone swift3 uibarbuttonitem

我正在尝试以编程方式设置左键按钮项目的大小,但我不能。

这是我的代码:

        let backButton = UIButton(frame: CGRect(x: 0, y: 0, width: 30, height: 30))
        backButton.setBackgroundImage(UIImage(named: "hipster_pelo2.png"), for: .normal)
        self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: backButton)

但这是使用Xcode 9和swift 3的iphone X的结果。在图像中,您可以看到标题应用程序将其移动到右侧,因为按钮大小:

enter image description here

任何人都知道问题将是图像大小??

1 个答案:

答案 0 :(得分:7)

您可以使用

限制barButton项目的大小
'run-as' failed. Could not set capabilities: Operation not permitted

参考:this bug

按钮的巨大框架是因为您设置按钮背景的巨大图像。虽然您设置为按钮的帧应该覆盖按钮的隐式大小,但是对于某些奇怪的原因,当自定义视图传递到条形按钮时,隐式大小会占用。因此,应用宽度和高度约束来限制自定义视图的大小是必要的。

修改

由于OP面临从网址加载图片并将其设置为按钮图像的问题,我正在更新我的答案以证明相同,

let barButton = UIBarButtonItem(customView: backButton)  
NSLayoutConstraint.activate([(barButton.customView!.widthAnchor.constraint(equalToConstant: 30)),(barButton.customView!.heightAnchor.constraint(equalToConstant: 30))])
self.navigationItem.leftBarButtonItem = barButton

OP的代码问题是尝试设置按钮图像,甚至在下载图像之前。所以这应该可以帮助您解决问题:)

编辑2:

OP在制作条形按钮的customView循环时遇到问题,所以这里是应该使BarButton项目的customView循环的代码:)

    do {
        try button.setImage(UIImage(data: Data(contentsOf: your_url)), for: .normal)
    }
    catch {
        print(error)
    } 

希望有所帮助