Ios 嵌套UI视图在编程UI中不起作用
我在一个具有4个水平子视图行的mainStackView UIStackView中工作,它工作正常,如下所示:mainStackView使用自动布局约束进行管理:Ios 嵌套UI视图在编程UI中不起作用,ios,uiview,uistackview,Ios,Uiview,Uistackview,我在一个具有4个水平子视图行的mainStackView UIStackView中工作,它工作正常,如下所示:mainStackView使用自动布局约束进行管理: rowsArray = Array<UIView>() for _ in 0...3 { let row = UIView() row.backgroundColor = UIColor.randomColor() //color for debugging
rowsArray = Array<UIView>()
for _ in 0...3 {
let row = UIView()
row.backgroundColor = UIColor.randomColor() //color for debugging
rowsArray.append(row)
}
mainStackView = UIStackView(arrangedSubviews: rowsArray)
mainStackView.axis = .vertical
mainStackView.alignment = .fill
mainStackView.distribution = .fillEqually
mainStackView.translatesAutoresizingMaskIntoConstraints = false
self.addSubview(mainStackView)
现在,假设本例中的每个子视图行中都有许多水平子视图,我需要将ArrangedSubview设置为数组,但它无法显示任何子视图
rowsArray = Array<UIStackView>()
for _ in 0...3 {
let row = UIStackView()
row.backgroundColor = UIColor.randomColor() //color for debugging
rowsArray.append(row)
}
了解为什么UIStackView没有表现为超类UIView,或者是否有任何其他考虑因素以编程方式嵌套UIStackView吗
Rgds。。。e这不是一个bug,它就是这样设计的,请阅读“管理堆栈视图外观”一节的以下摘录: UIStackView是UIView的一个非描述子类;也就是说,它不提供自己的任何用户界面。相反,它只管理其排列视图的位置和大小。因此,某些属性(如backgroundColor)对堆栈视图没有影响 这意味着UIStackView不是一个经典的UIView,而是一个很好的用于布局其子视图的界面。创建一个没有排列子视图的视图是没有意义的,这就是您的情况 将子视图添加到您创建的行中,将其背景色设置为红色,您将看到:
rowsArray = Array<UIStackView>()
for _ in 0...3 {
let row = UIStackView()
let view = UIView()
view.backgroundColor = UIColor.randomColor() //color for debugging
row.addArrangedSubview(view)
rowsArray.append(row)
}
关于嵌套的stackViews,我已经使用了相当长的一段时间,没有任何问题,所以我相信这是一条路。Thx@millan Nosál'。在做一些休息时,我发现框架在调试器中被正确地布置,UIStackView的backgroundColor属性为零。。。。当我看到你的答案。这是有道理的。。。添加容器视图应该可以解决这个问题。谢谢。。。。