更改工具栏高度时如何防止按钮向右移动?

时间:2017-08-31 16:41:06

标签: ios iphone swift swift3

我有一个带有GrowingTextView的UIToolbar,一个固定空间和一个UIBarButtonItem。看起来像:

GrowingTextView and button

GrowingTextView library调整TextView高度约束的大小时,调整工具栏的高度大小,同时将按钮移到右侧:

GrowingTextView and wrong button 无论文本视图和按钮的位置有多大。第一次调整文本视图时,它总是向右移动20像素。只是第一次。

我该如何解决?我曾尝试在可视模式下编写约束,但我无法以这种方式获得此布局。我也试过刷新固定空间。

使用固定空格添加Button的代码:

let item1 = UIBarButtonItem(customView: sendButton)
fixedSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.fixedSpace, target: nil, action: nil)
fixedSpace.width = UIApplication.shared.windows[0].frame.width - rightMargin - sendButton.frame.width
bottomToolbar.items = [fixedSpace, item1]

添加GrowingTextView的代码:

let views: [String: Any] = ["textView": messageToSendTextView]
let hConstraints = NSLayoutConstraint.constraints(withVisualFormat: "H:|-8-[textView]-60-|", options: [], metrics: nil, views: views)
let vConstraints = NSLayoutConstraint.constraints(withVisualFormat: "V:|-8-[textView]-8-|", options: [], metrics: nil, views: views)
bottomToolbar.addConstraints(hConstraints)
bottomToolbar.addConstraints(vConstraints)
self.view.layoutIfNeeded()

1 个答案:

答案 0 :(得分:0)

您需要在按钮两侧设置灵活空间。它会在两侧的空间中间留一个按钮。

试试这个:

let item1 = UIBarButtonItem(customView: sendButton)
let flexibleSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)
bottomToolbar.items = [flexibleSpace , item1, flexibleSpace]