Xcode 8 的 Interface Builder 中使用自动布局和特征变化正确设计的情节提要视图在模拟器和设备中的尺寸错误
Storyboard view designed properly with Auto Layout and Trait Variations in Interface Builder of Xcode 8 has wrong size in Simulator and Device
我已经在 iOS 应用程序上工作了很多年,然后才暂停更长时间。在我的新项目中,我决定尝试 Interface Builder 和 Storyboards 的新功能(Swift 3,Xcode 8.2.1)。所以我有一个工作应用程序,它为所有支持的设备精确定义了约束,遵循 "regular" 和 "compact" width/height 范例。一切似乎都有效,我喜欢这种方法。
在我决定 运行 应用程序也在 iPhone 模拟器上检查布局之前,我正在完成 iPad 模拟器的第一个视图(及其控制器)。事实证明,除了 ONE 视图之外,一切都按预期工作。
此视图具有以下行为:
- 如果在 Storyboard canvas(甚至是辅助编辑器中,
对我来说看起来一样,顺便说一句)我 selected "view as iPad 9,7" 和
运行 iPad 模拟器(屏幕大小相同),布局按应有的方式工作。
- 如果在情节提要中 canvas 我 select 编辑了 "view as iPhone 5" 并且
运行 iPhone 5 模拟器,布局按应有的方式工作。
- 但是,如果我 select "view as iPhone 5" 和 运行 iPad 模拟器上的应用程序或任何其他错误组合,则会发生以下情况:
一旦视图出现(自定义 segue 或默认推送。所有视图都在导航控制器内),它会显示缩放 down/up 到我 select 的预览大小的内容在故事板上。然后它动画化(从左上角开始缩放)以填满屏幕。例如:如果我 select "view as iPhone 5" 和 运行 在 iPad 上,视图出现在 iPad 模拟器的左上角,大小为iPhone 5. 然后按比例放大以填满具有我想要的布局的屏幕。
应该补充一点,在这个视图中,所有设备的布局看起来都一样,只是缩放 down/up。所以它真的只是错误的视图大小。
这一切只发生在我的一个观点上,我都以相同的方式设计和布局(约束)。这种情况每次都会发生,在模拟器和真实设备上都会发生。
上周我尝试了网络上的各种建议,但未能找到任何能够帮助我的主题(在 Stack Overflow 上)。
我迷路了。我很高兴提出任何建议!
谢谢。
在逐步从我的视图中删除所有内容并构建每一步后,我发现我的 viewDidLoad()
中有一个 self.view.layoutIfNeeded()
,它位于动画块中,动画块为单个子视图设置动画,但是对于某些原因导致上述问题。删除它解决了问题。
我已经在 iOS 应用程序上工作了很多年,然后才暂停更长时间。在我的新项目中,我决定尝试 Interface Builder 和 Storyboards 的新功能(Swift 3,Xcode 8.2.1)。所以我有一个工作应用程序,它为所有支持的设备精确定义了约束,遵循 "regular" 和 "compact" width/height 范例。一切似乎都有效,我喜欢这种方法。
在我决定 运行 应用程序也在 iPhone 模拟器上检查布局之前,我正在完成 iPad 模拟器的第一个视图(及其控制器)。事实证明,除了 ONE 视图之外,一切都按预期工作。
此视图具有以下行为:
- 如果在 Storyboard canvas(甚至是辅助编辑器中, 对我来说看起来一样,顺便说一句)我 selected "view as iPad 9,7" 和 运行 iPad 模拟器(屏幕大小相同),布局按应有的方式工作。
- 如果在情节提要中 canvas 我 select 编辑了 "view as iPhone 5" 并且 运行 iPhone 5 模拟器,布局按应有的方式工作。
- 但是,如果我 select "view as iPhone 5" 和 运行 iPad 模拟器上的应用程序或任何其他错误组合,则会发生以下情况:
一旦视图出现(自定义 segue 或默认推送。所有视图都在导航控制器内),它会显示缩放 down/up 到我 select 的预览大小的内容在故事板上。然后它动画化(从左上角开始缩放)以填满屏幕。例如:如果我 select "view as iPhone 5" 和 运行 在 iPad 上,视图出现在 iPad 模拟器的左上角,大小为iPhone 5. 然后按比例放大以填满具有我想要的布局的屏幕。
应该补充一点,在这个视图中,所有设备的布局看起来都一样,只是缩放 down/up。所以它真的只是错误的视图大小。
这一切只发生在我的一个观点上,我都以相同的方式设计和布局(约束)。这种情况每次都会发生,在模拟器和真实设备上都会发生。
上周我尝试了网络上的各种建议,但未能找到任何能够帮助我的主题(在 Stack Overflow 上)。
我迷路了。我很高兴提出任何建议!
谢谢。
在逐步从我的视图中删除所有内容并构建每一步后,我发现我的 viewDidLoad()
中有一个 self.view.layoutIfNeeded()
,它位于动画块中,动画块为单个子视图设置动画,但是对于某些原因导致上述问题。删除它解决了问题。