2013-06-06 5 views
5

UIWebViewのYouTube動画を再生しようとしています(下記のコードを参照)。iOS 6のYouTubeプレーヤーオリエンテーションに関する問題

すべてうまくいきますが、YouTubeプレーヤーはiOS 6の向きの変更をサポートしていません。私のアプリ全体はポートレートモードのみです。

この問題を解決するにはどうすればよいですか?どんな助けもありがとうございます。

私が使用していたコードは以下の通りです:

- (void)viewDidLoad 

{   
    [super viewDidLoad]; 
    float width = 300.0f; 
    float height = 300.0f; 
    youTubeURL = @"http://www.youtube.com/embed/ZiIcqZoQQwg"; 
    UIWebView *wv = [[UIWebView alloc] init]; 
    wv.frame = CGRectMake(10, 80, width, height); 

    NSMutableString *html = [[NSMutableString alloc] initWithCapacity:1] ; 
    [html appendString:@"<html><head>"]; 
    [html appendString:@"<style type=\"text/css\">"]; 
    [html appendString:@"body {"]; 
    [html appendString:@"background-color: black;"]; 
    [html appendString:@"color: white;"]; 
    [html appendString:@"}"]; 
    [html appendString:@"</style>"]; 
    [html appendString:@"</head><body style=\"margin:0\">"]; 
    [html appendFormat:@"<embed id=\"yt\" src=\"%@\"", youTubeURL]; 
    [html appendFormat:@"width=\"%0.0f\" height=\"%0.0f\"></embed>", 300.0f, 300.0f]; 
    [html appendString:@"</body></html>"]; 
    [wv loadHTMLString:html baseURL:nil]; 
    [self.view addSubview:wv]; 
} 
+0

プレーヤのビューコントローラ(フルスクリーンビデオビューコントローラ)を回転させようとしていますか?または、プレーヤがフルスクリーンで表示されることを許されておらず、 'UIWebview'(あるいはそのビューコントローラを含む)を回転させたいのですか? –

+0

デバイスの向きに応じて、プレーヤーのビューコントローラーを回転しようとしています。 –

答えて

2

ポートレートとランドスケープの両方のサポートが必要な場合は、アプリのサポートモードを[ターゲット] - > [概要] - > [サポートされているインターフェイスの向き]に設定する必要があります。

プレーヤーをロードするコードが正しいです。オリエンテーションサポートだけを追加するだけです。

自動レイアウトを使用している場合は、xibの制約を確認してください。そうでない場合は、NiravPatelで述べたように、各方向の変化についてのWebビューのフレームを設定します。

あなたが唯一のビューコントローラのすべてのビューコントローラでこれを追加し、回転させる場合:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOr‌​ientation { return NO; } 

をあなたが回転し、他のviewControllersにNOを返す必要がありますのViewControllerにYESを返すことができます。

+0

私たちがそうしていると、アプリ全体が回転しますよね?アプリ全体ではなく、ビデオを再生するビューコントローラだけが必要です。 –

+0

アプリ全体にインターフェイスの向きのサポートを追加する必要があります。 autoRotationを他のビューで制限することができます。以下のコードを確認してください。他のviewControllerでNOを返すことができ、必要なビューでYESを返すことができます。 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return NO; } – BrianChristo

3

あなたがしなければならないだろう何が以下のようなものです...

まず、あなたのデバイスを回転させたときに呼び出されるのviewDidLoad内の1つの通知を行います..

この通知では、「rotate:」という名前のメソッドが呼び出されるため、以下のようにそのメソッドを実装する必要があります。

#pragma mark - Rotate Screen Method 
- (void)rotate:(NSNotification *)n { 

switch ([[UIDevice currentDevice] orientation]) { 
    case UIDeviceOrientationLandscapeLeft: 
     yourwebview.transform = CGAffineTransformMakeRotation(M_PI/2); 
     yourwebview.frame = CGRectMake(0, 0, 768, 1024);//you can set any frame 
     break; 
    case UIDeviceOrientationLandscapeRight: 
     yourwebview.transform = CGAffineTransformMakeRotation(-M_PI/2); 
     yourwebview.frame = CGRectMake(0, 0,768, 1024);//you can set any frame 
     break; 
    case UIDeviceOrientationPortrait: 
     yourwebview.transform = CGAffineTransformIdentity; 
     yourwebview.frame = CGRectMake(0, 0, 768, 1024);//you can set any frame 
     break; 
    case UIDeviceOrientationPortraitUpsideDown: 
     yourwebview.transform = CGAffineTransformMakeRotation(M_PI); 
     yourwebview.frame = CGRectMake(0, 0, 768, 1024);//you can set any frame 
     break; 
    default: 
     break; 
    } 
} 

とそれだけです。

+0

実際に私は、ビデオを再生する場所(YouTubeのiフレームの再生ボタンを押した後)を、デバイスの向きに合わせて回転させたいと考えています。 –

+0

@AnoopK解決策を見つけられましたか? –