0

我有一个带有几个标签的标签栏设置。第一个 tabitem 是 viewcontroller,它以编程方式加载纵向布局的 xib。当用户旋转手机时,它会自动呈现一个横向布局的模式视图。这种机制运作良好。

当设备旋转到纵向模式时,它会关闭模式视图,并且底部会显示一个标签栏。我希望我的其他一些标签栏项目(例如滚动视图和 web 视图)在设备旋转时自动旋转为横向。

我已经实现了一个名为 RotateTabBarViewController 的类,它包含 shouldAutorotateToInterfaceOrientation 方法并检查 selectedViewController 上相同方法的值。因此,如果我的 webview 中的 shouldAutorotateToInterfaceOrientation 方法返回 true,则视图将按预期旋转。

这就是问题所在。当旋转视图处于横向模式时,标签栏仍然可见,这意味着用户可以单击第一项的图标。单击第一个项目时,它知道它处于横向模式并再次自动加载模式视图。唯一的问题是视图在屏幕上偏移。

我正在寻找一种解决方案,将模态视图重新调整到它应该在的位置。我不确定它是需要重新对齐的主视图还是模式视图。

以下链接包含该概念的演示。

http://www.veryniceindustries.com/rotation_demo.zip

  • 将设备旋转到纵向
  • 选择项目二
  • 将设备旋转到横向(需要一些帮助来重新对齐此视图)
  • 选择项目一(模式出现横向,但偏移)

任何帮助将不胜感激。

最好的,豪伊

4

1 回答 1

0

您是否考虑过在 viewController #1 上实现 viewWillAppear 方法,并更正视图的框架?

或者在orientationChanged或updateItemOneView方法中的itemOneViewController中处理它?

PS:感谢提供源代码,作为一个年轻的 Obj-C 程序员总是很高兴看到别人如何解决问题。

于 2009-12-26T13:19:09.357 回答