5

私のアプリには、shouldautorotateToInterfaceOrientationをサブクラス化するビュー コントローラーがあります。その中で、各ビューの回転を決定します。これは正しく動作します。しかし、iOS6 では、Apple から提供されたドキュメントを読んでも理解できません。

私のアプリには、ルート ビュー コントローラーとしてナビゲーション コントローラーがあります。このナビゲーション コントローラにはタブ コントローラがあります。また、タブ コントローラーにはいくつかのビュー コントローラーがあります。最初のビュー コントローラー (タブ コントローラー内) はポートレート モードでのみ表示され、2 番目のビュー コントローラー (タブ コントローラー内) はポートレート モードとランドスケープ モードの両方で表示されます。iOS5では正常に動作します。しかし、iOS6での作り方がわかりません。supportedInterfaceOrientationsをサブクラス化する必要があることはわかっていますが、回転が発生すると機能しません。驚いたことに、ビューが表示されているときに呼び出されます。私が欲しいものを作る方法は?

読んでくれてありがとう。

4

3 に答える 3

8

次のリンクで正しい方向に進むことができます: http://code.shabz.co/post/32051014482/ios-6-supportedorientations-with-uinavigationcontroller

基本的に、UINavigationController をサブクラス化し-supportedInterfaceOrientations、その.xml の変更をリッスンする必要がありますtopViewController。ブログ投稿でダウンロードできるサンプル クラスがあり、追加するコードについても説明しています。

于 2012-10-01T07:52:39.990 に答える
0

UINavigationControllerまたはUITabbarViewControllerを使用する場合、アプリケーションは常に、shouldAutorotate、supportedInterfaceOrientationsメソッドで言うことを実行します。

カテゴリを追加して、これらのメソッドを現在表示されているコントローラにリダイレクトできます。このような:

 @implementation UINavigationController (Rotation_IOS6)
-(BOOL)shouldAutorotate
{
    return [[self.viewControllers lastObject] shouldAutorotate];
}

-(NSUInteger)supportedInterfaceOrientations
{
    return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}
@end

UITabbarViewControllerについても同様です。

于 2012-10-01T13:07:40.657 に答える
0

私の意見では、これは私が見つけた最良の説明です: http://www.widemann.net/wp-fr/?p=662しかし、それはフランス語です。

多分それは英語のグーグル翻訳で理にかなっています

于 2012-10-03T11:37:04.513 に答える