2011-11-09 6 views
0

gl iOSアプリケーションでランドスケープモードをサポートしようとしています。私はウィンドウ、glビュー、および1つのメソッドshouldAutorotateToInterfaceOrientationを持つView Controllerを持っています。これはYESを返します。これは私がそれらを設定する方法です:iOSでランドスケープモードをサポートする方法は? shouldAutorotateToInterfaceOrientationは一度だけ呼び出されます

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メソッドで発生します。問題は、portraitメソッドのshouldAutorotateToInterfaceOrientationがポートレートモードで一度だけ呼び出されることです。私はまだ私のビューでイベントを取得しますが、自動回転のメソッドは決して再び呼び出されません。

私はこれを正しく設定していますか? nibファイルはなく、コードだけです。

ありがとうございました。

答えて

0

あなたののViewControllerのインスタンス上のinitを呼び出すべきである(それはのUIViewControllerのサブクラスである?)

次のUIViewController方法

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

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

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 

をオーバーライドする必要があります自動回転なければならないために呼び出しがあることを意味するものではありません回転が行われます。これはUIViewControllerクラスリファレンスで説明されています

デフォルトでは、UIViewControllerクラスはビューをポートレートで表示しますモード のみ。追加の向きをサポートするには、 shouldAutorotateToInterfaceOrientation:メソッドをオーバーライドして、サブクラスがサポートする の向きのすべてに対してYESを返します。 の自動サイズ変更プロパティが正しく設定されていれば、それだけでよい場合もあります。 しかし、UIViewControllerクラスは、必要に応じて追加のビヘイビアを実装するために、 のための追加のフックを提供します。

が一時的に必要とされていないか、または が、それ以外の向きの変更時に問題を引き起こす可能性の機能をオフにするには、 willRotateToInterfaceOrientationを上書きすることができます:期間:メソッドと が必要なアクションを実行します。方向の変更が完了したら didRotateFromInterfaceOrientation:メソッドをオーバーライドして、 機能を再び有効にすることができます。

オリエンテーションの変更にアニメーションを追加するには、 willAnimateRotationToInterfaceOrientation:duration:メソッドをオーバーライドし、そこでアニメーションを 実行します。

+0

ええ、問題は私がinitを呼び出していないことでした。 shouldAutorotateToInterfaceOrientationは十分なはずですが、回転アニメーション中に通知を受けたい場合は他のものがあります –

関連する問題