Swift:以编程方式为子视图设置自动布局约束不会调整视图大小

时间:2017-08-26 22:37:05

标签: ios swift autolayout

我有以下设置:UIView以编程方式添加一组子视图(UILabels),并设置自动布局约束,以便标签之间和UIViews边缘之间的距离为10。目标是UIView根据所有子视图(带动态文本的标签)的内容设置其大小,包括空格。

我使用以下代码,但似乎无法正常工作。 UIView没有调整大小,缩小了标签。

// setup of labelList somewhere else, containing the label data
var lastItemLabel: UILabel? = nil
var i = 1
for item in itemList {
   let theLabel = UILabel()
   // ... label setup with text, fontsize and color
   myView.addSubview(theLabel)
   theLabel.translatesAutoresizingMaskIntoConstraints = false

   // If it is the second or more 
   if let lastLabel = lastItemLabel {
        theLabel.leadingAnchor.constraint(equalTo: lastLabel.trailingAnchor, constant: 12).isActive = true
        theLabel.topAnchor.constraint(equalTo: myView.topAnchor, constant: 10).isActive = true
        // if it is the last label
        if i == labelList.count {
            theLabel.trailingAnchor.constraint(equalTo: myView.trailingAnchor, constant: 12).isActive = true
        }
   }
   // If it is the first label
   else {
       theLabel.leadingAnchor.constraint(equalTo: myView.leadingAnchor, constant: 12).isActive = true
       theLabel.topAnchor.constraint(equalTo: myView.topAnchor, constant: 10).isActive = true
   }

   lastItemLabel = theLabel
   i += 1
}

1 个答案:

答案 0 :(得分:1)

由于您需要的内容大于设备的实际显示内容,因此您需要添加UIScrollView以包含标签。