私は本当に悪い状況にあり、アプリを提出しなければなりませんが、1 つの問題を発見しました:
私のアプリは Nav ベースのアプリです。このアプリでは、1 つのコントローラーのみをランドスケープできるようにします。
--> ルートコントローラー --> WelcomeController --> LandscapeController
ランドスケープコントローラーでは、メインビュー内に2つのビューを設定しました。1つはユーザーにデバイスを回転させる必要があることを伝えるポートレートモードで、もう1つはランドスケープに設定されています(メインビューはポートレートモードです)
私は私のナビゲーションコントローラをサブクラス化MyNavController
しました:私が設定した:
- (BOOL)shouldAutorotate
{
return self.topViewController.shouldAutorotate;
}
- (NSUInteger)supportedInterfaceOrientations
{
return self.topViewController.supportedInterfaceOrientations;
}
したがって、階層の最上位にあるコントローラーが、navController
回転できるかどうかを決定します。
私のアプリデリゲートで私は設定しました:
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return (UIInterfaceOrientationMaskAll);
}
だから私は自分のアプリで両方の向きを持つことができます。
ウェルカムコントローラーで私が設定した:
- (NSUInteger)supportedInterfaceOrientations
{
return (UIInterfaceOrientationMaskPortrait);
//return (UIInterfaceOrientationPortrait);
}
- (BOOL)shouldAutorotate
{
return YES;
}
つまり、Welcome Controller はポートレート モードでのみ使用できます。
ランドスケープコントローラーで私は設定しました:
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscapeLeft;
}
- (BOOL)shouldAutorotate
{
return YES;
}
ランドスケープコントローラーが回転できるようにします。
以下を使用してランドスケープコントローラーを呼び出します。
LandscapeController *aLandscapeController = [LandscapeController] allo] init....
[self.navigationController pushViewController:aLandscapeController animated:YES];
それは機能しますが、信じられないかもしれませんが、ランドスケープコントローラーを押してデバイスを回すと、ウェルカムコントローラーがランドスケープになり、画面の半分しか占有しないため、ランドスケープにすることはできず、これは非常に悪いです私には想像できません。
それを避けるために私は何ができますか?
私はどんな助けも借ります、もし必要なら寄付をします。
どうもありがとうございました。