0

私のアプリでは、縦向きモードのみをサポートし、として使用UINavigationControllerRootViewControllerます。しかし、私が使用して映画を再生していてMPMoviePlayerController、プレーヤーがフルスクリーンである場合は、両方のlandscapeモードをサポートする必要があります。

これは@ChrisBallingerによるこの素晴らしいコードをiOS6で使用していますがiOS5、Googleで長い間検索した後、解決策が見つからないため、ここに投稿しました。この問題を解決してください。

また、ここで見つかっnavigationcontrollerた Rotate コードをサブクラス化し、設定しようとしましたが、うまくいきませんでした。

4

2 に答える 2

1

私のサンドボックス アプリ: https://github.com/comonitos/programatical_device_orientation

解決策は簡単です:

インターフェース(hファイル):

    BOOL rotated;

実装 (m ファイル): 1. rewrite

    -(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
    {
    return rotated;
    }

2コール【セルフセットアップ】

    -(void) setup { 
    rotated = YES; 
    [[UIDevice currentDevice] setOrientation:UIDeviceOrientationLandscapeLeft]; 
    rotated = NO; 
    }
于 2013-09-23T11:55:10.297 に答える
-1

あなたがしなければならないことは...

最初に、以下のように viewdidload メソッドで通知を実装します...

    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(rotate:)
                                             name:UIDeviceOrientationDidChangeNotification
                                           object:nil];

以下のように回転メソッドを実装します。

 #pragma mark - Rotate Screen Method
- (void)rotate:(NSNotification *)n {
//    if (!isFullScreen)
//        return;
switch ([[UIDevice currentDevice] orientation]) {
    case UIDeviceOrientationLandscapeLeft:
        playerView.transform = CGAffineTransformMakeRotation(M_PI / 2);//playerview is view in which  you have added MPMoviePlayerViewController object
        playerView.frame = CGRectMake(0, 0, 768, 1024);
        break;
    case UIDeviceOrientationLandscapeRight:
        playerView.transform = CGAffineTransformMakeRotation(-M_PI / 2);
        playerView.frame = CGRectMake(0, 0,768, 1024);
        break;
    case UIDeviceOrientationPortrait:
        playerView.transform = CGAffineTransformIdentity;
        playerView.frame = CGRectMake(0, 0, 768, 1024);
        break;
    case UIDeviceOrientationPortraitUpsideDown:
        playerView.transform = CGAffineTransformMakeRotation(M_PI);
        playerView.frame = CGRectMake(0, 0, 768, 1024);
        break;
    default:
        break;
}
}

それが機能しているかどうかを教えてください!!!

ハッピーコーディング!!!

于 2013-09-06T09:53:56.003 に答える