Swift UIView小部件自动布局无法正常工作

时间:2015-11-21 23:57:49

标签: uiview autolayout swift2

我有一个UIView“小部件”(通过单独的XIB文件和相应的UIView的Swift子类创建),它插入到主故事板中,以便可以轻松地重复使用。但是,添加到窗口小部件(XIB)的自动布局约束不起作用。

这是小部件的样子:

What the XIB looks like

这个想法是3个指标(UILabels)通过小部件均匀分布。一些关键限制因素包括:

  • 将第二个和第三个指标与第一个指标垂直对齐
  • 确保第二个指标在superview中水平居中
  • 确保第一个指标与左边缘的距离
  • 确保第3个指标与右边缘相距特定距离

等等......

但是,当我运行应用程序时,看起来在将小部件插入主故事板后不会施加此类约束。第3个指标从不显示,第2个指标不会水平居中。为了确认,我在UIView周围添加了红色边框,这样我就可以看到整个小部件。整个小部件显示在超级视图中,只是指标未按预期正确对齐。

知道为什么会这样吗?我正在考虑的一个替代方案是将指标直接放在主故事板视图上,但我宁愿不这样做以便我可以重用视图/代码......

更新

正如@Peyman所问,这是一个更清晰的约束版本。我已经将标签更改为左/中/右,以便更容易将约束与XIB中的实际UI元素相关联:

Detailed constraints

1 个答案:

答案 0 :(得分:0)

我终于找到了原因 - 看起来widget的self.view并没有填充小部件的整个边界,出于某种原因(我不太了解视图层次结构所以我和#39;我相信其他人可以更好地解释这一点。但解决方案基本上是UIView的init函数中的一行附加代码:

self.view.frame = self.bounds;