0
我以編程方式迅速建立一個UIToolBar及其項目:我UIButtonBarItem的不正確鋪陳與FlexibleSpace
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識別它。
非常感謝這麼多的這樣一個堅實的答案。以編程方式添加約束的方法有很多種。我還沒有看過這個版本。我假設'active = true'等同於'activateConstraints',它等於'addConstraint'。我很好奇爲什麼蘋果開發人員爲了創造這麼多相同的東西而做了這麼大的努力。再次感謝! – Trip