2016-02-25 5 views
1

у меня есть внешний UIStackView, назовет его outerStackView со следующими свойствами:UIStackView - Три расположенных подвиды с относительной шириной

outerStackView.axis = .Horizontal 
outerStackView.distribution = .Fill 
outerStackView.spacing = 10 

outerStackView имеет три расположенных подвиды (думать о них как 3 колонках), которые также случаются быть UIStackViews.

Я хочу, чтобы ширина трех расположенных подсетей (столбцов) была относительным множителем ширины внешнего стека.

Так что я попытался сделать это:

leftColumnStackView = UIStackView() 
middleColumnStackView = UIStackView() 
rightColumnStackView = UIStackView() 

outerStackView.addArrangedSubview(leftColumnStackView) 
outerStackView.addArrangedSubview(middleColumnStackView) 
outerStackView.addArrangedSubview(rightColumnStackView) 

leftColumnStackView.widthAnchor.constraintEqualToAnchor(outerStackView.widthAnchor, multiplier: 0.4, constant: 0).active = true 
middleColumnStackView.widthAnchor.constraintEqualToAnchor(outerStackView.widthAnchor, multiplier: 0.4, constant: 0).active = true 
rightColumnStackView.widthAnchor.constraintEqualToAnchor(outerStackView.widthAnchor, multiplier: 0.2, constant: 0).active = true 

Это бросает кучу ошибок autolayout.

Как бы сделать эти три столбца UIStackViews относительной шириной к их родительскому виду?

+0

Вы можете поделиться с нами своими ошибками? – PaulWoodIII

+0

Похоже, что расстояние 10 и множитель не совпадают. Умножитель приводит к 100%, это означает, что для интервала не осталось места. – dasdom

+0

@dasdom - вы правы, я должен был учитывать расстояние. Спасибо за совет – Alex

ответ

1

Я решил это, предоставив относительную ширину левого и среднего столбцов (учитывая расстояние между ними), а правый столбец просто заполнил пространство.

leftColumnStackView.widthAnchor.constraintEqualToAnchor(outerStackView.widthAnchor, multiplier: 0.38, constant: -20).active = true 
middleColumnStackView.widthAnchor.constraintEqualToAnchor(outerStackView.widthAnchor, multiplier: 0.38, constant: -20).active = true