2017-01-21 3 views
0

Я хочу создать простой бар в верхней части моего вида, с двумя кнопками бок о бок, занимая по 50% каждого.Swift 3 - Constrain Button Width

Я создал бар так:

let topTabView = UIView() 
    topTabView.backgroundColor = UIColor.red 
    topTabView.translatesAutoresizingMaskIntoConstraints = false 
    view.addSubview(topTabView) 

    topTabView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true 
    topTabView.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor).isActive = true 
    topTabView.heightAnchor.constraint(equalToConstant: 60).isActive = true 
    topTabView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true 

И это работает.

Затем я добавляю две кнопки, и я получаю все ограничения, за исключением того, что я не уверен, как заставить привязку ширины работать, , так что каждая кнопка занимает 50% изображения.

let filterButton = UIButton() 
    filterButton.backgroundColor = UIColor.red 
    filterButton.setTitle("Filter", for: .normal) 
    filterButton.translatesAutoresizingMaskIntoConstraints = false 
    topTabView.addSubview(filterButton) 

    filterButton.leftAnchor.constraint(equalTo: topTabView.leftAnchor).isActive = true 
    filterButton.centerYAnchor.constraint(equalTo: topTabView.centerYAnchor).isActive = true 
    filterButton.heightAnchor.constraint(equalTo: topTabView.heightAnchor).isActive = true 

    // NOT SURE ABOUT THIS ONE 
    filterButton.widthAnchor.constraint(equalToConstant: 200).isActive = true 


    let mapButton = UIButton() 
    mapButton.backgroundColor = UIColor.red 
    mapButton.setTitle("Map", for: .normal) 
    mapButton.translatesAutoresizingMaskIntoConstraints = false 
    topTabView.addSubview(mapButton) 

    mapButton.rightAnchor.constraint(equalTo: topTabView.rightAnchor).isActive = true 
    mapButton.centerYAnchor.constraint(equalTo: topTabView.centerYAnchor).isActive = true 
    mapButton.heightAnchor.constraint(equalTo: topTabView.heightAnchor).isActive = true 

    // NOT SURE ABOUT THIS ONE 
    mapButton.widthAnchor.constraint(equalToConstant: 200).isActive = true 

Я пытался что-то вроде этого, но это не сработало:

mapButton.widthAnchor.constraint(equalToConstant: toTabView.frame.width/2.0).isActive = true 

Любая помощь будет удивительно!

ответ

2

так, что каждая кнопка занимает 50% зрения

То есть то, что multiplier для. Вы не используете его. Используй это!

Итак, вам нужно ограничение, в котором ширина кнопки совпадает с шириной супервизора, за исключением значения 0.5 для его multiplier.

Пример:

let b1 = UIButton() 
    b1.translatesAutoresizingMaskIntoConstraints = false 
    b1.backgroundColor = .green 
    b1.setTitle("Button1", for: .normal) 
    b1.setTitleColor(.black, for: .normal) 

    let b2 = UIButton() 
    b2.translatesAutoresizingMaskIntoConstraints = false 
    b2.backgroundColor = .yellow 
    b2.setTitle("Button2", for: .normal) 
    b2.setTitleColor(.black, for: .normal) 

    self.view.addSubview(b1) 
    self.view.addSubview(b2) 

    NSLayoutConstraint.activate([ 
     b1.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 50), 
     b2.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 50), 

     b1.leadingAnchor.constraint(equalTo:self.view.leadingAnchor), 
     b2.leadingAnchor.constraint(equalTo:b1.trailingAnchor), 

     b1.widthAnchor.constraint(equalTo: self.view.widthAnchor, multiplier: 0.5), 
     b2.widthAnchor.constraint(equalTo: self.view.widthAnchor, multiplier: 0.5), 

    ]) 

Результат:

enter image description here

+1

Добавлен фактический код! Круто, а? – matt