Ios 空视图导致高度/位置不明确

Ios 空视图导致高度/位置不明确,ios,autolayout,ios10,uistackview,Ios,Autolayout,Ios10,Uistackview,我有两个视图,一个UIView和一个UIStackView let mainView = UIView() mainView.translatesAutoresizingMaskIntoConstraints = false let stackView = UIStackView() stackView.axis = .vertical stackView.translatesAutoresizingMaskIntoConstraints = false 它们都使用这些约束添加到superV

我有两个视图,一个
UIView
和一个
UIStackView

let mainView = UIView()
mainView.translatesAutoresizingMaskIntoConstraints = false

let stackView = UIStackView()
stackView.axis = .vertical
stackView.translatesAutoresizingMaskIntoConstraints = false
它们都使用这些约束添加到
superView

NSLayoutConstraint.activate([
    mainView.topAnchor.constraint(equalTo: view.topAnchor),
    mainView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
    mainView.leadingAnchor.constraint(equalTo: view.leadingAnchor),

    stackView.topAnchor.constraint(equalTo: mainView.bottomAnchor),
    stackView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
    stackView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
    stackView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
])
UIView
UIStackView
都不包含任何其他视图时,我在
debugger

uiview的高度不明确

高度和垂直位置对于视图不明确

但是,如果我将
ui按钮添加到
UIStackView
,然后使用
将其设置为hidden。ishiden=true
,这两个警告都会消失,除了
iOS10
中的两个警告都会保留

无论是否有
调试器警告
我都会得到我想要的结果,即如果
UIStackView
为空(或所有
子视图
隐藏),则
UIView
会覆盖整个屏幕


这里发生了什么,为什么一个隐藏视图与一个空的stackView不同,为什么在
iOS10
上的行为不同?最后但并非最不重要的一点是,我如何在不影响当前布局的情况下满足iOS10,这似乎适用于iOS10之后的所有内容?

以下是您得到的-
mainView
stackView
没有高度,边缘被剪裁。 无法根据该约束计算垂直位置和高度。您可以在任一视图上添加一些高度约束,以明确自动布局

mainView.heightAnchor.constraint(greaterThanOrEqualToConstant: 1) 

尝试将按钮alpha设置为0,而不是隐藏按钮。@DavidH这在某种程度上起作用,我没有收到任何调试器警告/冲突,但stackview始终具有按钮的高度,如果所有按钮都隐藏,我希望其他视图拉伸到superview的全高添加填充视图-我刚刚这样做了。给它大小上的限制。如果不需要按钮,请删除它们,然后将填充视图上的约束设置为所需的约束。您可以将填充视图保留在堆栈视图中,也可以添加和删除它。@DavidH添加填充视图,并将其设置为
heightConstraint
equalToConstant:0
实际上会删除调试器警告,谢谢!(仍然认为它工作起来非常奇怪…)没有工作,仍然有相同的警告(尝试将此添加到两个视图)