Interface Builder 在每次操作后水平和向后折叠垂直堆栈视图

Posted

技术标签:

【中文标题】Interface Builder 在每次操作后水平和向后折叠垂直堆栈视图【英文标题】:Interface Builder is collapsing vertical stack view horizontally and back after each action 【发布时间】:2018-01-04 11:15:11 【问题描述】:

我正在 Interface Builder 中设计一个视图控制器并有一个堆栈视图。在任何操作之后(例如移动任何对象一点点,或者将约束更改 1px),整个堆栈视图水平折叠,弄乱了所有布局。然后,当我采取任何其他操作(例如,更改另一个约束,甚至是相同的约束,都没有关系)时,它会恢复到原来的正确布局。

这是正确布局的截图:

这是相同的视图,只是在字面上改变了任何东西

当我再次更改任何内容时,它会被修复(恢复到正确的布局),而当我更改其他内容时,它会再次变得混乱,永远这样。检查器中没有任何自动布局问题。另外,在这个问题开始后,我将所有视图的拥抱和压缩阻力约束设置为 1000,但无济于事。这可能是什么原因造成的?我在 Xcode 9.2 上。

【问题讨论】:

我也有同样的问题,但一直没能找到解决办法。在 Interface builder 中使用 stackview 是不可能的,因为它会不断调整大小并消失。 @andlin 我已经完全放弃了堆栈视图,因为它在我的滚动视图中也有可怕的滚动性能。虽然堆栈视图的想法很诱人,但当前的实现存在太多错误且速度太慢,无法在许多项目中使用。 【参考方案1】:

在发布此消息后,我注意到了一些事情:

如果我给出一个首选的显式宽度(大于零的任何值,不管是 1 还是 10000),问题就会消失:

虽然我仍然不知道为什么每次操作后它都会折叠整个堆栈视图。

但是,它解决了这个问题。

【讨论】:

谢谢!这似乎可行,尽管必须给出首选宽度很奇怪。而且堆栈视图的跳转很烦人;( @prad 是的,这绝对是 Apple 方面的一个错误,但至少可以节省一天的时间:)

以上是关于Interface Builder 在每次操作后水平和向后折叠垂直堆栈视图的主要内容,如果未能解决你的问题,请参考以下文章

从 Interface Builder 连接时,GestureRecognizer 操作未触发

Interface Builder 找不到任何出口或操作

在 Interface Builder 中定义“通用”segue

通过 Interface Builder 更改 UIView 属性

在没有 Interface Builder 的情况下修改 Nib 文件

在 Interface Builder 中更改 UILabel 上的字符间距