【问题标题】:Modal View Controller don't rotate correctly模态视图控制器不能正确旋转
【发布时间】:2012-01-17 08:46:52
【问题描述】:

在 ipad 上,在 ios Objective C 中,我在一个模态视图中遇到旋转移动问题。我在shouldAutoRotate 方法中给出了元素的位置,它的父视图也可以旋转,但是当我旋转模态视图时,元素没有放在正确的位置。

有关更多信息,如果我以纵向模式打开视图,我会得到以下数据:

<UIView: 0x72bc160; frame = (0 0; 768 1004); clipsToBounds = YES; 
autoresize = W+H; layer = <CALayer: 0x13f324f0>

在横向模式下:

<UIView: 0x1358f3b0; frame = (0 0; 768 748); clipsToBounds = YES; 
autoresize = W+H; layer = <CALayer: 0x1358f3e0>>

但是如果我旋转视图,水平框架会随着垂直框架的变化而变化......

我做错了吗?

【问题讨论】:

  • 我很难理解真正的问题是什么。您是否尝试从根视图控制器呈现模态视图?
  • 检查控件是否在模态视图中进入 shouldAutoRotate ..

标签: objective-c ios ipad


【解决方案1】:

我在视图控制器旋转方面获得了很多乐趣。有两点要记住:

  1. 假设您覆盖整个屏幕(并且不对子视图转换执行任何特定操作),请确保您从尽可能广泛的视图控制器(通常是应用程序的根视图控制器)呈现模态视图控制器。
  2. 确保每个包含概念的视图控制器都将旋转事件传递给它的概念子视图控制器。 (这在 iOS 5 之前的定义非常不明确。)

当这些事情发生在我身上时,是因为后台的视图控制器获得了旋转事件,但我所呈现的特定视图控制器忽略了它们并且没有将它们传递给模态视图控制器,导致不一致.

【讨论】:

  • 非常感谢。我将模态视图放在与根视图不同的一个视图中:)
  • 另一件事:如果您从另一个以模态呈现的视图控制器呈现模态视图控制器,则可能会遇到不可预知的界面旋转问题。如果您在这样的模态链中呈现视图控制器,无论如何这可能是不良架构的标志......
  • @EricGoldberg:好消息是,如果您始终记得从最广泛的视图控制器呈现视图控制器,那始终是“顶级”视图控制器,您可以回避这个问题。跨度>
  • @Jesper:同意。有时,当事情“感觉”不正确时,你会以一种 Cocoa Touch 不喜欢的方式硬塞一些东西,而 Apple 以他们的方式制造它可能有几十个原因。用户界面方面,模态可能不应该呈现另一个模态。模态应该代表用户流中的“死胡同”或“叶子”。可能在自身内部具有导航控制器层次结构,但不会从自身呈现另一个模式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多