2

ナビゲーション コントローラーのルート ビュー コントローラーは縦向きのみをサポートし、他のコントローラーはすべての向きをサポートします。ルート ビュー コントローラーを使用していて、デバイスが横向きの場合、縦向きで開く次のビュー コントローラーを押すと、横向きで開く必要があります。すべての向きをサポートします。

これで私を助けてください。

iPhone 4s iOS6.1.3を使用

4

3 に答える 3

1

次のコードを使用して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をロードすると、最初にデバイスの向きがチェックされ、次に関連するフレームがロードされます

于 2013-05-23T10:09:12.823 に答える
0

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;
 }
于 2013-05-23T10:26:12.200 に答える