Ios 在嵌套视图中,当我添加多个排列的子视图时,它会破坏布局,为什么?
在使用UIStackView时,我遇到了一个奇怪的问题,无法在嵌套的UIStackView中添加额外排列的子视图:Ios 在嵌套视图中,当我添加多个排列的子视图时,它会破坏布局,为什么?,ios,uikit,uistackview,Ios,Uikit,Uistackview,在使用UIStackView时,我遇到了一个奇怪的问题,无法在嵌套的UIStackView中添加额外排列的子视图: override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .white let subViews = [UIColor.gray, UIColor.darkGray, UIColor.lightGray].map { (color) ->
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
let subViews = [UIColor.gray, UIColor.darkGray, UIColor.lightGray].map { (color) -> UIView in
let v = UIView()
v.backgroundColor = color
return v
}
let redView = UIStackView(arrangedSubviews: subViews)
redView.distribution = .fillEqually
redView.heightAnchor.constraint(lessThanOrEqualToConstant: 100).isActive = true
let blueView = UIView()
blueView.backgroundColor = .blue
let buttons = [UIColor.gray, UIColor.darkGray, UIColor.lightGray].map { (color) -> UIView in
let v = UIView()
v.backgroundColor = color
return v
}
let buttonsView = UIStackView(arrangedSubviews: buttons)
buttonsView.distribution = .fillEqually
buttonsView.heightAnchor.constraint(lessThanOrEqualToConstant: 100).isActive = true
let stackView = UIStackView(arrangedSubviews: [redView, blueView, buttonsView])
view.addSubview(stackView)
stackView.axis = .vertical
stackView.fillSuperview()
}
结果,我得到了完全拉伸的蓝色视图,而不是预期的行为:
但是,当我在底部堆栈视图中保留一个子视图时,它会像预期的那样出现
let buttons = [UIColor.gray].map { (color) -> UIView in
let v = UIView()
v.backgroundColor = color
return v
}
let buttonsView = UIStackView(arrangedSubviews: buttons)
buttonsView.distribution = .fillEqually
buttonsView.heightAnchor.constraint(lessThanOrEqualToConstant: 100).isActive = true
let stackView = UIStackView(arrangedSubviews: [redView, blueView, buttonsView])
为什么??代码有什么问题?感谢任何帮助或提示,我也尝试了在顶部和底部堆栈视图上设置translatesAutoresizingMaskIntoConstraints=false,但在底部堆栈视图上没有任何运气
buttonView.heightAnchor.constraint(equalToConstant:100)。isActive=true
而不是
buttonView.heightAnchor.constraint(lessthanRequalToConstant:100)。isActive=true
将对齐和分布设置为父堆栈视图,您应调用TranslatesAutoResizezingSkinToConstraints=false以查看buttonView、RedView。感谢您的帮助,我试过了,但我需要将中间视图拉伸,并固定顶视图和底视图,所以很遗憾,分布无助于您的期望输出是什么?期望输出与上一个屏幕截图中的相同,但不是底部的一个灰色视图,我想用buttonsView.axis=.horizontal获得三个子视图,它们的排列方式与顶部堆栈中的viewcheck相同