ナビゲーション コントローラーのルート ビュー コントローラーは縦向きのみをサポートし、他のコントローラーはすべての向きをサポートします。ルート ビュー コントローラーを使用していて、デバイスが横向きの場合、縦向きで開く次のビュー コントローラーを押すと、横向きで開く必要があります。すべての向きをサポートします。
これで私を助けてください。
iPhone 4s iOS6.1.3を使用
ナビゲーション コントローラーのルート ビュー コントローラーは縦向きのみをサポートし、他のコントローラーはすべての向きをサポートします。ルート ビュー コントローラーを使用していて、デバイスが横向きの場合、縦向きで開く次のビュー コントローラーを押すと、横向きで開く必要があります。すべての向きをサポートします。
これで私を助けてください。
iPhone 4s iOS6.1.3を使用
次のコードを使用してviewcontrollerにログインした後、最初の画面でデバイスの向きを確認できます:-
-(void)viewWillAppear:(BOOL)animated
{
[self willRotateToOrientation:[[UIDevice currentDevice] orientation]];
[super viewWillAppear:YES];
}
- (void)willRotateToOrientation:(UIInterfaceOrientation)newOrientation {
if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation))
{
if (newOrientation == UIInterfaceOrientationLandscapeLeft || newOrientation == UIInterfaceOrientationLandscapeRight) {
//set your landscap View Frame
[self supportedInterfaceOrientations];
}
}
else if (UIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation))
{
if(newOrientation == UIInterfaceOrientationPortrait || newOrientation == UIInterfaceOrientationPortraitUpsideDown){
//set your Potrait View Frame
[self supportedInterfaceOrientations];
}
}
// Handle rotation
}
または、このviewcontrollerをロードすると、最初にデバイスの向きがチェックされ、次に関連するフレームがロードされます
1. UINavigationController のサブクラスを作成する必要があります。次のメソッドを追加します。ブール変数を 1 つ取り、すべての向きをサポートしているかどうかを確認し、その値を変更します。
@implementation NavigationControllerViewController
- (BOOL)shouldAutorotate
{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
AppDelegate *appdelgate=[[UIApplication sharedApplication]delegate];
if (appdelgate.issuppoertAll) {
// for iPhone, you could also return UIInterfaceOrientationMaskAllButUpsideDown
return UIInterfaceOrientationMaskAll;
}
return UIInterfaceOrientationMaskPortrait;
}
@end
2ルートView Controllerから他のView Controllerに移動する場合
横向きから縦向きに強制的に変更したい場合は、このコードを使用してください。
obj_viewcontroller = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
[self presentModalViewController:obj_viewcontroller animated:NO];
[self dismissModalViewControllerAnimated:NO];
[self.navigationController pushViewController:obj_viewcontroller animated:NO];
3 2 番目のビュー コントローラーでは、ブール変数の値を変更する必要があります
-(void)viewWillAppear:(BOOL)animated
{
appdelgate.issuppoertAll=YES;
}
4 このメソッドをすべてのビュー コントローラに追加し、必要に応じて向きを設定します。
- (NSInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}