如何在iOS上支持横向模式? shouldAutorotateToInterfaceOrientation只被调用一次

时间:2011-11-09 21:24:56

标签: ios

我正在尝试在我的gl iOS应用程序中支持横向模式。我有一个窗口,一个gl视图和一个带有一个方法的视图控制器,shouldAutorotateToInterfaceOrientation,它返回YES。这就是我设置它们的方式:

 window = [[UIWindow alloc] initWithFrame:rect];

 GLView *glView = [[GLView alloc] initWithFrame:rect];
 glView.delegate = self;

 view_controller = [ViewController alloc];
 view_controller.view = glView;
 window.rootViewController = view_controller;

这发生在方法applicationDidFinishLaunching上。问题是对于纵向模式,方法shouldAutorotateToInterfaceOrientation仅被调用一次。我仍然在我的视图中获取事件,但自动旋转的方法永远不会再被调用。

我设置正确吗?没有nib文件,只是代码。

感谢。

1 个答案:

答案 0 :(得分:0)

你应该在你的ViewController实例上调用init(它是一个UIViewController子类吗?)

您应该覆盖以下UIViewController方法

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation

对autorotate的调用并不意味着将发生旋转,这在UIViewController类引用中有解释

  

默认情况下,UIViewController类以纵向模式显示视图   只要。要支持其他方向,您必须覆盖   shouldAutorotateToInterfaceOrientation:方法并返回YES为any   您的子类支持的方向。如果自动调整属性   您的视图配置正确,这可能是您所需要做的。   但是,UIViewController类为您提供了额外的挂钩   根据需要实施其他行为。

     

暂时关闭不需要或可能的功能   否则在方向改变期间会导致问题,你可以   覆盖willRotateToInterfaceOrientation:duration:方法和   在那里执行所需的操作。然后你可以覆盖   didRotateFromInterfaceOrientation:方法并使用它来重新启用它们   一旦方向改变完成,就会有功能。

     

要为方向更改添加动画,请覆盖   willAnimateRotationToInterfaceOrientation:duration:方法和执行   那里你的动画。