1

我有一个非常奇怪的方向问题。我在导航控制器下有一系列视图控制器。其中之一可以采取任何方向。当我离开方向时,我必须使用 setOrientation。有趣的是,当转换发生到下一页时,就会发生旋转。这通常不是问题,除了单个案例——从 UIDeviceOrientationPortraitUpsideDown 到 normal 会导致我所有顶部安装的项目向上迁移大约八分之一的页面。

我认为我可以通过三种方式解决它:

  1. 以某种方式将 setOrientation 与我的 pushViewController 调用分开(因此新视图不需要翻转)
  2. 将我的项目设置为以更好的方式锚定在设备顶部(我检查过,它们似乎是)
  3. 重置 ViewDidLoad 方法中元素的 Y 尺寸,但这似乎是错误的。

这是我将新视图推送到堆栈代码中:

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait]; 

ResultSelect_ViewController *resultSelect = [[ResultSelect_ViewController alloc] initWithNibName:@"ResultSelect" bundle:nil];
[self.navigationController pushViewController:resultSelect animated:YES];

还有其他人觉得奇怪的是模拟器不允许您测试倒置的肖像行为吗?

4

3 回答 3

2

请注意:Apple 开始使用静态(甚至可能是动态)分析器并阻止使用私有方法(例如setOrientation:)的应用程序进入商店。上周发生在我的一个朋友身上。

您是否尝试过针对 iPhone OS 3.0 构建并仅依赖于shouldRotateToInterfaceOrientation:? 行为似乎是固定的(与 2.x 中的实现相比)并且 - 至少对我而言 - 完成了这项工作。

于 2009-11-19T23:54:49.423 回答
1

通常,您不支持倒置方向。这似乎是标准的 Apple 应用程序行为并且是有道理的。颠倒的情况并不是真的有用,并且可能会给用户造成混淆。

我们有一个类似的问题,当翻阅颠倒的情况时,子视图会在主视图上下移动。我们只是停止支持倒置,这基本上解决了问题。

于 2009-11-18T19:05:10.263 回答
0

避免从倒置旋转到纵向时出现旋转错误的方法是不要这样做。相反,旋转两次中途停止(例如UIDeviceOrientationLandscapeRight)。时间问题不是使用睡眠,而是didRotateFromInterfaceOrientation在该点实施并触发第二次旋转(或推送到下一个视图)。

于 2009-11-26T00:40:22.580 回答