4

1つのプロジェクトに2つのViewControllerがあります。ただし、ビューコントローラの1つを自動回転させ、もう1つを自動回転させないようにします。

以下に示すようにマスタープロジェクト設定を設定した場合: ここに画像の説明を入力してください

次に、自動回転したくないView Controllerの次のコードに関係なく、すべてのViewControllerが自動回転します。

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    if (interfaceOrientation == UIInterfaceOrientationPortrait) {
        return YES;
    }
    return NO;
}

ただし、マスタープロジェクトの設定を以下のように設定すると、自動回転させたくないView Controllerは機能しませんが、それはまた、必要なViewControllerも自動回転できないことを意味します。

ここに画像の説明を入力してください

マスタープロジェクト(plistファイル)の設定​​をビューコントローラーの設定と統合して、一方のビューコントローラーが自動回転し、もう一方の設定が自動回転しないようにするにはどうすればよいですか?

4

2 に答える 2

3
 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

iOS 6で減価償却されたため、プロジェクトが実行されている場合は、それが機能していません。あなたがする必要があるのは実装です:

- (NSUInteger)supportedInterfaceOrientations
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation

1つ目は、使用が許可されている方向をコントローラーに通知し、2つ目は、最初に使用できる方向を指示します。最初のメソッドは、メソッドshouldAutorotate:がYESを返す場合にのみ呼び出されることに注意してください。

これらは、supportedInterfaceOrientationsに使用できる定数です。

UIInterfaceOrientationMaskPortrait
UIInterfaceOrientationMaskLandscapeLeft
UIInterfaceOrientationMaskLandscapeRight
UIInterfaceOrientationMaskPortraitUpsideDown
UIInterfaceOrientationMaskLandscape
UIInterfaceOrientationMaskAll
UIInterfaceOrientationMaskAllButUpsideDown

これらはiOS6.0でのみ機能することに注意してください。

于 2012-12-05T19:04:04.317 に答える
0

tabbarControllerとiOS<6.0を使用していると仮定して、次のコードを使用して問題を解決してみてください。

//In First View Controller

//BOOL activeStatus;

-(void)viewWillAppear:(BOOL)animated
{
 activeStatus=YES;
}


-(void)viewWillDisappear:(BOOL)animated
{
 activeStatus=NO;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight) && activeStatus==YES)
{
    return YES;
}

return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

//In Second View Controller

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{

 return YES;
}
于 2013-03-14T07:04:19.880 に答える