ナビゲート中にアプリの向きを縦向きから横向きに強制的に変更する方法はありますか?
コントローラをAからBにプッシュしている間、Bは横向きである必要がありますが、Aコントローラは縦向きである必要があります。
ナビゲート中にアプリの向きを縦向きから横向きに強制的に変更する方法はありますか?
コントローラをAからBにプッシュしている間、Bは横向きである必要がありますが、Aコントローラは縦向きである必要があります。
ViewController-B で、viewDidLoad に次のコード行を追加します。
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight];
float angle = M_PI/2; //rotate 180°, or 1 π radians
self.view.layer.transform = CATransform3DMakeRotation(angle, 0, 0.0, 1.0);
ナビゲーション コントローラーを使用して A から B に移動する場合、このコードは正常に機能します。
私はこれを使用しました。
これがあなたを助けることを願っています。
コーディングをお楽しみください :)
言うことで- (void)viewWillAppear:(BOOL)animated
:
//this is to force the application to re-evaluate device orientation
//comment the last lines and see
//cannot use [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeLeft];
//as "setOrientation" is a private method, and we risk to be kicked out by Apple
UIViewController *c = [[[UIViewController alloc]init] autorelease];
[self presentModalViewController:c animated:NO];
[self dismissModalViewControllerAnimated:NO];
...しかし、最初に、xibで、ビューの方向を目的の方向に設定します
同じことを試みた最後のアプリでの経験から、ナビゲーションベースのアプリケーションで方向を強制的に変更しないように指示するスタックオーバーフローに関する回答が見つかりました。
(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if(interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
return NO;
else
return YES;
}
この関数を使用すると、View Controller を目的の向きで使用できます。この場合は、横向きに設定し、縦向きモードでは回転を許可しません。
B ビュー コントローラーが最初に A ビュー コントローラーの向きで読み込まれるという問題に直面します。そこで、アプリの完全な向きを横向きに変更しました。お役に立てれば。