我在使用拆分视图控制器时遇到了一个奇怪的问题,并且我已经能够在全新的应用程序中非常轻松地重现该问题。如果您将 iPhone 6 Plus 旋转为横向,主视图控制器和详细视图控制器在屏幕上可见,但如果您随后旋转回纵向并切换选项卡然后旋转到横向,则详细视图控制器将完全灰色,好像什么都没有。这将记录到控制台:<Error>: CGImageCreate: invalid image size: 0x0
我想知道您是否知道原因或可以采取哪些措施来修复此错误。
该设置具有三个选项卡,每个选项卡都是通过 Interface Builder 拖出UITabBarController
的默认选项。UISplitViewController
子类UISplitViewController
化并将 3 个拆分视图更改为该类。将拆分视图控制器的委托设置为 self in viewDidLoad
。然后从splitViewController:collapseSecondaryViewController:ontoPrimaryViewController:
. 这对其进行了设置,以便在旋转回纵向而不是默认的详细信息视图控制器后,主视图仍然可见。
重现错误:在 iPhone 6 Plus 上以纵向启动应用程序,旋转到横向,旋转回纵向,点击第二个或第三个选项卡,旋转到横向
错误:详细视图控制器完全灰色
预期:详细视图控制器应该出现就像通常启动应用程序一样,点击不同的选项卡,然后旋转到横向
附加信息:一旦发生这种情况,如果您旋转回纵向,然后返回到不同的选项卡,它也会在旋转到横向时显示灰色细节控制器。该应用程序必须强制退出并重新启动才能在横向中查看这些拆分视图。
现在我注意到如果您打开应用程序并显示第一个选项卡,如果您将 iPhone 6 Plus 旋转到横向,它实际上会初始化选项卡栏控制器(5 个附加视图控制器)中的每个主视图控制器和详细视图控制器 - 它停在viewDidLoad
如果您对这些控制器进行子类化,则会设置断点。我希望它只为屏幕上显示的拆分视图控制器初始化详细视图控制器。我想知道这是否是预期的行为?我相信它可能与这个错误有关。
我的问题是,这个灰屏是 iOS 中的一个错误,还是这个设置有问题,或者有什么办法可以防止这种情况发生?
它应该如何出现:
执行上述步骤时的显示方式: