iOS 6上的YouTube播放器定位问题

时间:2013-06-06 06:28:19

标签: iphone ios

我正在尝试在UIWebView内播放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];  
}

2 个答案:

答案 0 :(得分: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;
   }
 }

就是这样。

答案 1 :(得分:2)

如果您需要纵向和横向支持,则必须在“目标”下设置应用支持的模式 - &gt;摘要 - &gt; “支持的界面方向”。

加载播放器的代码是正确的。您只需要单独添加方向支持。

如果您使用的是自动布局,请检查xib中的约束。如果没有,则在NiravPatel提到的每个方向更改上为Web视图设置框架。

如果只想旋转一个视图控制器,请在所有视图控制器中添加:

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

您可以在应该旋转的Viewcontroller上返回YES,并在其他viewControllers上返回NO。