我是以编程方式在swift中创建UIToolBar及其Items:
var items = [UIBarButtonItem]()
let leftButton = UIBarButtonItem(image: UIImage(named: "left"), style: .Plain, target: self, action: Selector("doneClickedMaButton"))
let spacer = UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil)
let rightButton = UIBarButtonItem(image: UIImage(named: "right"), style: .Plain, target: self, action: Selector("doneClickedRight"))
let searchButton = UIBarButtonItem(barButtonSystemItem: .Search, target: self, action: Selector("doneClickedSearch"))
items.append(leftButton)
items.append(spacer)
items.append(searchButton)
items.append(spacer)
items.append(rightButton)
var toolBar = UIToolbar()
toolBar.frame = CGRectMake(0, 0, self.view.frame.size.width, 50)
toolBar.translatesAutoresizingMaskIntoConstraints = false
toolBar.backgroundColor = UIColor.redColor()
toolBar.items = items
toolBar.sizeToFit()
view.addSubview(toolBar)
view.addConstraint(NSLayoutConstraint(item: toolBar, attribute: .Bottom, relatedBy: .Equal, toItem: view, attribute: .Bottom, multiplier: 1.0, constant: 0.0))
如果我没有添加spacer
项,那么模拟器看起来像这样:
如果我确实让他们进去,就像在这段代码中所说的那样。我明白了:
正如您在此处所看到的,不仅图像现在从屏幕向左下方移动,而且它们不再是正确的顺序。
我以为.FlexibleSpace只是增加了项目间的动态间距。我在这里错过了什么吗?有人在各个帖子中提到,可以在UIBarButtonItem中为UILabel设置宽度,这可以使.FlexibleSpace识别它。
答案 0 :(得分:1)
问题是您没有足够的约束来满足自动布局引擎。您正在将工具栏固定到底部,但宽度正在缩小,因此它只能容纳按钮,但您希望它是视图的宽度。尝试类似:
Deferred