所以我在一个简单的布局中有一个垂直堆栈视图。当我通过Interface Builder添加视图时,我看到堆栈视图中的视图没有问题。
然后,当我以编程方式将视图添加到UIStackView时,它会破坏约束,并且添加的视图将显示在窗口的顶部。我很困惑为什么它会破坏堆栈视图的约束。
func buildCats(theJson:JSON){
//self.verticalStack.subviews.forEach({ $0.removeFromSuperview() })
print(theJson)
if let infos = self.swiftyJsonvar["info"].array{
for info in infos{
guard let v = UINib(nibName: "ticketOrderView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as? UIView else { return }
v.translatesAutoresizingMaskIntoConstraints = false
self.verticalStack.addArrangedSubview(v)
}
}
}
答案 0 :(得分:0)
添加的子视图需要约束,因为它们没有内在大小。尝试:
v.heightAnchor.constraint(greaterThanOrEqualToConstant:30).isActive = true
v.widthAnchor.constraint(greaterThanOrEqualToConstant:200).isActive = true
嗯....我现在怀疑这个......我怀疑这个问题可能与在后台线程上添加视图有关。也许在主线程上运行循环?
编辑2:啊......我现在打赌的问题与你在“ticketOrderView”中查看/子视图的内容有关
有关示例,请参阅:https://github.com/DonMag/ScratchPad