2014-10-03 71 views
1

我正在更新YouTube频道的iOS应用。在之前的版本中(使用Xcode 5的iOS 7),我曾经在UIWebView中嵌入了youtube iFrame,并且一切都很好。但是,在使用Xcode 6的iOS 8中,每当我播放Youtube视频并且它全屏显示时,我的UIWebView约束就会中断,UIWebView会在我的控制器中重新定位(通常会在屏幕上显示10点)。UIWebView在全屏播放视频时突破约束(Xcode 6)

我试着改变约束条件,但似乎并不重要,我设置了什么约束,它最终会在玩家全屏时破坏。

这里是用来嵌入YouTube的iframe html代码:http://pastebin.com/z4zyq7Hs

谢谢:)

- (void)embedYouTube:(NSString *)urlString 
{ 
NSString *embedHTML =[NSString stringWithFormat:@"\ 
         <html><head>\ 
         <style type=\"text/css\">\ 
         body {\ 
         background-color: transparent;\ 
         color: blue;\ 
         }\ 
         </style>\ 
         </head><body style=\"margin:0\">\ 
         <iframe height=\"140\" width=\"325\"  src=\"http://www.youtube.com/embed/%@\"></iframe>\ 
         </body></html>",urlString]; 
[self.webView loadHTMLString:embedHTML baseURL:nil]; 

}

由于日志是巨大的,我已经在引擎收录粘贴它

+0

我正面临同样的问题。你有没有设法解决它? – 2014-10-17 04:06:31

+0

同样在这里。有关它的任何消息? – entropid 2014-10-27 23:55:58

回答

1

我有同样的问题。但是,我没有遇到重定位问题(使用Xcode 6.1),只有一堆约束中断日志。

我测试了什么仍然无法工作: - 删除约束和setTranslatesAutoresizingMaskIntoConstraints为YES所有的WebView及其子视图 - 与WKWebview,更新,更快的UIWebView

我还考打位DailyMotion视频和交换的UIWebView它也有同样的问题,所以我怀疑这是UIWebview的MediaPlayer视图上的问题。

0

尝试这样

- (void)embedYouTube:(NSString*)url frame:(CGRect)frame { 
    NSString* embedHTML = @"\ 
     <html><head>\ 
    <style type=\"text/css\">\ 
    body {\ 
    background-color: transparent;\ 
    color: white;\ 
    }\ 
    </style>\ 
    </head><body style=\"margin:0\">\ 
     <embed id=\"yt\" src=\"%@\" type=\"application/x-shockwave-flash\" \ 
    width=\"%0.0f\" height=\"%0.0f\"></embed>\ 
     </body></html>"; 
    NSString* html = [NSString stringWithFormat:embedHTML, url, frame.size.width, frame.size.height]; 
    if(videoView == nil) { 
     videoView = [[UIWebView alloc] initWithFrame:frame]; 
     [self.view addSubview:videoView]; 
    } 
    [videoView loadHTMLString:html baseURL:nil]; 
    } 
+0

仍然打破限制:( – 2014-10-24 15:37:40

0

我即将离开工作,所以我不得不快速输入这个答案,我发现这个固定的

一种方法是刷新的缓存正在浏览的网页,我没有这个坚实的修复,但我想出了一个暂时的最后一周,这可以通过在HTML的标题创建一个链接到一个CSS文件来完成

<link id="refreshCache" rel="stylesheet" type="text/css" href="refresh.css">

,重要的是,你还可以创建一个refresh.css文件,你不过是大声留空,

现在使用JavaScript或jQuery的,如果你已经拥有它联系起来,使用

.remove http://api.jquery.com/remove/

上的ID refreshCache,在页面加载,删除在标题链接到空文件加载页面时...

这将会让你的浏览器缓存,希望这有助于!