Swift 在Xcode 8的界面生成器中,使用自动布局和特性变化正确设计的情节提要视图在模拟器和设备中的大小错误

Swift 在Xcode 8的界面生成器中,使用自动布局和特性变化正确设计的情节提要视图在模拟器和设备中的大小错误,swift,interface-builder,xcode-storyboard,Swift,Interface Builder,Xcode Storyboard,我已经在iOS应用程序上工作了很多年,直到有一个更长的停顿。在我的新项目中,我决定尝试界面生成器和故事板的新功能(Swift 3,Xcode 8.2.1)。因此,我有一个工作应用程序,它精确定义了所有受支持设备的约束条件,遵循“常规”和“紧凑”的宽度/高度范例。一切似乎都很顺利,我喜欢这种方法 在我决定在iPhone模拟器上运行应用程序以检查布局之前,我正在完成iPad模拟器的第一批视图(及其控制器)。结果表明,除了一个视图之外,所有视图都可以按预期工作 此视图具有以下行为: 如果在故事板画布

我已经在iOS应用程序上工作了很多年,直到有一个更长的停顿。在我的新项目中,我决定尝试界面生成器和故事板的新功能(Swift 3,Xcode 8.2.1)。因此,我有一个工作应用程序,它精确定义了所有受支持设备的约束条件,遵循“常规”和“紧凑”的宽度/高度范例。一切似乎都很顺利,我喜欢这种方法

在我决定在iPhone模拟器上运行应用程序以检查布局之前,我正在完成iPad模拟器的第一批视图(及其控制器)。结果表明,除了一个视图之外,所有视图都可以按预期工作

此视图具有以下行为:

  • 如果在故事板画布中(甚至在辅助编辑器中 顺便说一句,对我来说也一样)我选择了“作为iPad 9,7查看”和 运行iPad模拟器(屏幕大小相同),布局会按应有的方式工作
  • 如果在故事板画布中,我选择了“查看为iPhone 5”,然后 运行iPhone5模拟器,布局按其应有的方式工作
  • 但是,如果我选择“查看为iPhone 5”,并在iPad模拟器上运行应用程序或任何其他错误组合,则会发生以下情况:
一旦视图出现(自定义segue或默认推送。所有视图都在导航控制器内),它将显示按我在故事板上选择的预览大小缩放的内容。然后设置动画(从左上角缩放)以填充屏幕。例如:如果我选择“查看为iPhone 5”并在iPad上运行,该视图将显示在iPad模拟器的左上角,大小与iPhone 5相同。然后它会按比例放大,以填充屏幕,使其具有我想要的精确布局

应该补充的是,在这个视图中,所有设备的布局看起来都是一样的,只是按比例缩小/放大。所以它实际上只是归结为错误的视图大小

这一切只发生在我的一个视图上,我都以同样的方式设计和布置(约束)。这种情况每次都会发生,在模拟器和真实设备上都会发生

上周我在网上尝试各种建议,但没有找到任何能帮助我的主题(关于堆栈溢出)

我迷路了。我很高兴有任何建议


谢谢。

在逐步从我的视图中删除所有内容并构建每个步骤后,我发现我的
viewDidLoad()
中有一个
self.view.layoutifneed()
,它位于动画块中,为单个子视图制作动画,但由于某种原因导致了上述问题。删除它解决了这个问题。

听起来像是一个Xcode错误。您应该向Apple报告。@matt.writes.code仍然没有Apple的回复。。。你确定这可能是一个Xcode错误吗?还有其他想法吗,可能是什么?