【发布时间】:2017-02-27 14:06:09
【问题描述】:
所以我有一个简单布局的垂直堆栈视图。当我通过 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)
}
}
}
【问题讨论】:
-
我认为这可能是因为您使用以下行禁用了视图的自动布局:
v.translatesAutoresizingMaskIntoConstraints = false。所以虽然堆栈视图有自动布局,但新视图没有 -
我通过 IB 输入的视图没有自动布局。它只是由stackview处理。我删除了该行并尝试将其设置为 TRUE 并每次都获得相同的行为。
-
您不为此使用 tableview 是否有特定原因?您可以为此设计一个带有自己约束的表格单元
-
我没有以编程方式使用堆栈视图,但我很确定添加的视图需要布局约束(顶部、底部、前导和尾随)
标签: swift xcode uiview uistackview