模态视图控制器无法正确旋转

dam*_*i86 1 objective-c ipad ios

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

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

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

在横向模式中:

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

但如果我旋转视图,水平框架会因垂直框架而改变......

难道我做错了什么?

Jes*_*per 5

我对视图控制器旋转有很多乐趣.要记住两件事:

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

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

  • @Jesper:同意.有时当事情没有"感觉"正确的时候,你会以Cocoa Touch不喜欢的方式来兜售某些东西,并且可能有几十个理由让Apple像他们那样做.用户界面方面,模态*可能*不应该呈现另一个模态.模态应表示用户流中的"死胡同"或"叶子".也许有导航控制器层次结构本身,但不能呈现自己的另一个模态. (2认同)