在上述Apple所提供的FoodTracker教程标准中(特别是在实现自定义控件部分中),它告诉您使用以下代码实现的约束仅在您正在创建的UIButton视图位于您要创建的UIStackView View Controller中时才有效,并且前提是该UIStackView是本教程前面创建的另一个UIStackView的子视图(包含您在本教程中创建的其余视图)。
我设法将按钮调整为正确的大小(我犯了一个错误,那就是将水平UIStackView置于其超级视图之外),但是我不知道为什么除非水平堆叠视图是正确的,否则按钮将无法正确调整大小垂直stackview的子视图。有人可以解释为什么吗?
致谢。
class RatingControl: UIStackView {
//MARK: Initialization
override init(frame: CGRect) {
super.init(frame: frame)
setupButtons()
}
required init(coder: NSCoder) {
super.init(coder: coder)
setupButtons()
}
//MARK: Private methods
private func setupButtons() {
// Create the button
let button = UIButton()
button.backgroundColor = UIColor.red
// Add constraints
button.translatesAutoresizingMaskIntoConstraints = false
button.heightAnchor.constraint(equalToConstant: 44.0).isActive = true
button.widthAnchor.constraint(equalToConstant: 44.0).isActive = true
print(button.intrinsicContentSize)
// Add the button to the stack
addArrangedSubview(button)
}
}