2016-04-17 43 views
9

我以编程方式创建UIStackView并将它们添加到在Storyboard中创建的父项UIStackView。子堆栈视图是水平的,有2个标签。我需要修复第二个UILabel的宽度,并使第一个UILabel填充剩余空间。修复UIStackView中元素的宽度

现在我有这样的:

Before

而且我想这一点:

@IBOutlet weak var parentStackView: UIStackView! 

func addStackViewsToParentStackView(params: [String: Float]) { 
    for (name, value) in params { 
     let parameterNameLabel = UILabel() // first label 
     parameterNameLabel.text = name 
     let parameterValueLabel = UILabel() // second label 
     parameterValueLabel.text = value.description 
     parameterValueLabel.frame.size.width = 80.0 // I've tried to fix width, but it does't help 

     let childStackView = UIStackView(arrangedSubviews: [parameterNameLabel, parameterValueLabel]) 
     childStackView.axis = .Horizontal 
     childStackView.distribution = .FillProportionally 
     childStackView.alignment = .Fill 
     childStackView.spacing = 5 
     childStackView.translatesAutoresizingMaskIntoConstraints = true 
     parentStackView.addArrangedSubview(childStackView) 
    } 
} 

感谢您:

After

我产生孩子堆栈视图代码帮帮我!

回答

13

只需将宽度约束放在标签上。

parameterValueLabel.widthAnchor.constraint(equalToConstant: 80).isActive = true