【发布时间】:2017-05-19 11:05:51
【问题描述】:
我有一个包含 3 个排列的子视图的堆栈视图;一个带有复选框图像的按钮,一个带有一些文本的标签和另一个带有“i”图像的按钮。创建视图时,由于某种原因没有显示最后一个按钮,所以我去调试视图层次结构,在那里我可以在视图列表中看到按钮,但在实际视图中看不到。然后当我按下继续停止调试视图层次结构时,按钮突然出现并挤压标签以使其适合。
如果我删除标签,两个按钮都显示得很好。如果我将视图放在 UIView 而不是堆栈视图中,则不会显示“i”按钮。如果我缩短标签上的文本,“i”按钮会正确显示。编辑:我还尝试切换标签和“i”按钮,然后两者都正确显示。
您知道当您继续调试可能会改变视图时会调用哪些方法吗?你知道解决这个问题的另一种方法吗?
谢谢
编辑:Stackviews 约束只是带有一些插入常量的超级视图约束:
NSLayoutConstraint.activate([
stackView.topAnchor.constraint(equalTo: view.topAnchor, constant: 12),
stackView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 12),
stackView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 10),
stackView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: 10)
])
按钮和标签只是作为排列好的子视图添加,没有添加约束
【问题讨论】:
-
在您的故事板中,将您的堆栈视图分布属性设置为平均填充 .. 并将您的标签自动收缩属性设置为最小字体大小等 ..11
-
如果有的话,请在堆栈视图上/在堆栈视图中分享带有约束的屏幕截图
-
已编辑以显示约束
-
为什么你的 stackView 有一个底部约束?如果按钮很小,让 stackView 自行决定高度
-
您是否在后台线程上设置此视图(实例化元素、添加元素、设置约束等)?这可能是您会看到让代码运行和通过调试中断代码之间存在差异的原因。也许显示您正在使用的完整代码?