2013-06-06 80 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的視圖控制器返回YES。

+0

如果我們這樣做,整個應用程序將會旋轉,對嗎?我只想要視頻控制器在哪裏播放視頻旋轉,而不是整個應用程序。 –

+0

您必須爲整個應用程序添加界面方向支持。然後您可以在其他視圖中限制autoRotation。檢查下面的代碼。您可以在其他viewControllers上返回NO,並在您需要的一個視圖上返回YES ... - (BOOL)shouldAutorotateToInterfaceOrientation :(UIInterfaceOrientation)interfaceOrientation { return NO; } – BrianChristo

3

你將要做的就是像下面...

首先要一個通知在viewDidLoad中,將被稱爲當你旋轉你的設備..

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

現在通知將調用名爲「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播放器中按播放按鈕後)根據設備方向旋轉。 –

+0

@AnoopK你能找到解決方案嗎? –