Ios UITableView标题中容器视图的自动布局约束因不同设备而中断

Ios UITableView标题中容器视图的自动布局约束因不同设备而中断,ios,xcode,autolayout,Ios,Xcode,Autolayout,我有一个对我来说毫无意义的问题。我有以下设置: |UITableView| ||UITableView标题|| |||UIView||| 因此,在我的UITableView标题中,我有一个容器视图,该视图对其superview具有前导、尾随和顶部约束。我的测试设备大小(即iPhone8)的所有设置都是正确的。如果我将测试设备更改为iPhone8 Plus,我会得到一个奇怪的尾随约束偏移量-右边缘39pt,这正是iPhone8 Plus宽度与iPhone8宽度的差值 当我在Xcode中的设备之间切

我有一个对我来说毫无意义的问题。我有以下设置:

|UITableView|

||UITableView标题||

|||UIView|||

因此,在我的UITableView标题中,我有一个容器视图,该视图对其superview具有前导、尾随和顶部约束。我的测试设备大小(即iPhone8)的所有设置都是正确的。如果我将测试设备更改为iPhone8 Plus,我会得到一个奇怪的尾随约束偏移量-右边缘39pt,这正是iPhone8 Plus宽度与iPhone8宽度的差值

当我在Xcode中的设备之间切换时,发现尾部约束不正确,我只需自己进行调整(将尾部更改为1,然后再更改为0),特定设备的问题就消失了

起初我认为这是Xcode中的错误,但当我在设备上测试时,问题仍然存在

我尝试设置一个新的视图控制器并添加相同的元素,但没有效果

我附上截图,使我的问题更清楚

之前:调整所需的约束

之后:切换到不同大小的设备


将此作为答案添加,因为它太多了,无法发表评论-尽管它实际上只是一个确认,而不是一个解决方案

好的-看看你的项目

我会说这是一个IB/故事板错误,我在其他情况下也见过。如果将
视图更改为…
设备,帧不会立即更新

但是,如果您更改了任何可能导致布局更新的内容(例如临时更改视图的背景色或标签的字体大小),则所有内容都应该就位

您还将注意到,如果选择一个元素并稍微移动它,
updateframes
按钮/菜单项将启用。。。这也将正确地更新帧


注意:当我运行应用程序时,无论情节提要中的布局如何,约束在运行时都会正确地调整视图的大小。

首先,我接受了DonMag的回答(感谢您的时间),因为这看起来确实是一个Xcode界面生成器错误。正如我在前面提到的场景中进一步研究的那样,自动布局约束在我需要时没有更新布局,因此没有为我提供正确的
视图.bounds

我尝试在
viewdilayoutsubviews()
中获取它,但也没有成功-它仍然提供适合另一台设备的大小


在使用视图的边界之前调用
view.layoutifneed()
是个什么把戏。它所做的是立即更新视图的布局。因此,您可以访问所需视图的边界。

展开文档窗格中的所有
(这样我们可以看到所有子视图和约束),然后重新发布屏幕CAP。好的-很难判断到底发生了什么。。。我建议你重新开始,加入你的第一要素。确保尺寸正确。添加第二个元素,检查结果。等等提示:为视图/标签等提供对比背景色,以便于查看框架。实际上,我刚刚打开了一个新项目,并设置了相同的层次结构-UITableView with header view with child container view。结果是一样的。所以我想这与这种设置有关。对我来说仍然没有意义。如果你发布故事板的源代码,我会快速查看。你想让我分享这个示例项目吗?它只是一个视图控制器,带有填充整个vc的表视图。然后,我添加一个UIView作为表视图标题,并添加另一个UIView,该UIView将前导、尾随、顶部和底部约束附加到标题的边缘。当您更换设备时,您可以看到问题。谢谢您的回答。没错,我也经历过同样的行为。但当我从菜单中更改设备时,它又会出错。我也不在乎这是否只发生在故事板上,但这发生在我在应用商店上的live应用程序中。现在下载Xcode 11,希望这不会发生,因为我已经没有想法了。如果它发生在运行时,那么听起来像是发生了什么事-因为我没有在这个简单的例子中体验到。是的,很抱歉误导了你。当我运行它时,它也是测试项目中的一个IB错误。因此,我将再次执行您建议的操作—创建一个新的视图控制器并逐个添加元素。我会让你知道事情的进展。干杯