我有一个UIView“小部件”(通过单独的XIB文件和相应的UIView的Swift子类创建),它插入到主故事板中,以便可以轻松地重复使用。但是,添加到窗口小部件(XIB)的自动布局约束不起作用。
这是小部件的样子:
这个想法是3个指标(UILabels)通过小部件均匀分布。一些关键限制因素包括:
等等......
但是,当我运行应用程序时,看起来在将小部件插入主故事板后不会施加此类约束。第3个指标从不显示,第2个指标不会水平居中。为了确认,我在UIView周围添加了红色边框,这样我就可以看到整个小部件。整个小部件显示在超级视图中,只是指标未按预期正确对齐。
知道为什么会这样吗?我正在考虑的一个替代方案是将指标直接放在主故事板视图上,但我宁愿不这样做以便我可以重用视图/代码......
更新
正如@Peyman所问,这是一个更清晰的约束版本。我已经将标签更改为左/中/右,以便更容易将约束与XIB中的实际UI元素相关联:
答案 0 :(得分:0)
我终于找到了原因 - 看起来widget的self.view并没有填充小部件的整个边界,出于某种原因(我不太了解视图层次结构所以我和#39;我相信其他人可以更好地解释这一点。但解决方案基本上是UIView的init函数中的一行附加代码:
self.view.frame = self.bounds;