0
我想在一個UIStackView
水平內放置一組自定義視圖。 子視圖中的每一個具有一寬度和高度equal to constant
約束:當我將UIStackView發佈版設置爲equalspacing時,爲什麼子視圖不可見?
let stack = UIStackView(frame: frameRect)
stack.axis = UILayoutConstraintAxis.horizontal
stack.distribution = UIStackViewDistribution.equalSpacing
stack.layoutMargins = UIEdgeInsets(top: 0, left: 40, bottom: 0, right: 40)
stack.isLayoutMarginsRelativeArrangement = true
for i in 1...3 {
let numberView = RotatingNumberView()
numberView.heightAnchor.constraint(equalToConstant: CGFloat(cellSize))
numberView.widthAnchor.constraint(equalToConstant: CGFloat(cellSize))
numberViews.append(numberView)
stack.addArrangedSubview(numberView)
}
如果我改變到fillEqually
分佈,子視圖被示出,但它們的寬度被拉伸以填充stackView。
我想它與擁抱或壓縮抵抗優先權有關,但在subview中設置這些不起作用。
這裏發生了什麼?
首先,你爲什麼不使用故事板? –
@UmerFarooq我必須以編程方式添加子視圖,因爲子視圖的數量無法事先確定。 – NeoWang
對於除'fillEqually'分發之外的所有分發,堆棧視圖在計算沿着堆棧軸的大小時使用每個排列視圖的'intrinsicContentSize'屬性。 – Rahul