如果设置隐藏,iOS UIStackView 无法同时满足约束
Posted
技术标签:
【中文标题】如果设置隐藏,iOS UIStackView 无法同时满足约束【英文标题】:iOS UIStackView unable to simultaneously satisfy constraints if set hidden 【发布时间】:2016-02-08 09:17:23 【问题描述】:我在引用 UIStackView
时遇到问题。我创建了一个 StackView 并向其中添加了一些捆绑到另一个 StackViews 中的项目。现在我想使用 hidden 属性为内部 StackViews 设置动画以在不同对象之间切换。为此,我在ViewDidLoad
的代码中调用StackView.hidden
来隐藏包含项目的StackView。这些代码似乎在模拟器中工作,但它会引发错误:
Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(
"<NSLayoutConstraint:0x7fd29d00b460 'UISV-canvas-connection' UIStackView:0x7fd29acdb3b0.top == UIStackView:0x7fd29acdc120.top>",
"<NSLayoutConstraint:0x7fd29d00b5a0 'UISV-canvas-connection' V:[UISlider:0x7fd29accb620]-(0)-| (Names: '|':UIStackView:0x7fd29acdb3b0 )>",
"<NSLayoutConstraint:0x7fd29d00f8d0 'UISV-hiding' V:[UIStackView:0x7fd29acdb3b0(0)]>",
"<NSLayoutConstraint:0x7fd29d00b9a0 'UISV-spacing' V:[UIStackView:0x7fd29acdc120]-(10)-[UISlider:0x7fd29accb620]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x7fd29d00b9a0 'UISV-spacing' V:[UIStackView:0x7fd29acdc120]-(10)-[UISlider:0x7fd29accb620]>
我发现内部 StackView 中的问题是间距。如果我将间距切换为 0,问题就会消失。但我不想错过间距。我认为另一种选择是将每个对象隐藏在内部 StackView 中,但这是一项巨大的工作,而且隐藏 StackView 更简单。有没有办法解决这个问题?
感谢您的帮助!
【问题讨论】:
【参考方案1】:仅供参考:当我想隐藏 UIStackView 时,我遇到了这种情况。我建议将您希望隐藏的 UIStackView 放在另一个 UIStackView 分配设置为填充而不是按比例填充
【讨论】:
以上是关于如果设置隐藏,iOS UIStackView 无法同时满足约束的主要内容,如果未能解决你的问题,请参考以下文章