2014-09-16 28 views
9

Ho problemi che non riesco a capire.iOS 8 video YouTube incorporato

Ho questo codice che funziona perfettamente in Xcode 5 con iOS 7:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    CGFloat width = self.view.frame.size.width; 
    CGFloat height = self.view.frame.size.height; 
    UIWebView *webview = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, width, height)]; 
    NSString* embedHTML = @"\ 
    <html><head><meta name=\"viewport\" content=\"width=device-width; initial-scale=1.0; user-scalable=0;\"/>\ 
    <style type=\"text/css\">\ 
    body {\ 
    background-color: transparent;\ 
    color: black;\ 
    }\ 
    </style>\ 
    </head><body style=\"margin:0;\">\ 
    <embed id=\"yt\" src=\"https://www.youtube.com/v/M7lc1UVf-VE?hd=1\" type=\"application/x-shockwave-flash\" \ 
    width=\"%0.0f\" height=\"%0.0f\"></embed>\ 
    </body></html>"; 
    NSString *html = [NSString stringWithFormat:embedHTML, width, height]; 
    [webview loadHTMLString:html baseURL:nil]; 
    [self.view addSubview:webview]; 
} 

Quando costruisco lo stesso codice in Xcode 6 per iOS 8 poi i display video in WebView, ma è modo di piccole.

Qualcuno può spiegare cosa sta succedendo qui e come potrei superare questo?

+0

Perché non utilizzare https://github.com/0xced/XCDYouTubeKit? – thijsai

+0

Una ragione potrebbe essere, perché questa dovrebbe essere un'app ufficiale e la pagina che stai collegando agli stati: "Attenzione: XCDYouTubeKit è contro i Termini di servizio di YouTube". Ma grazie comunque. – berliner

+0

@berliner hai trovato la soluzione per questo problema oltre alla libreria di terze parti? – ViruMax

risposta

4

Ho avuto lo stesso problema, ho risolvere utilizzando questa soluzione

https://developers.google.com/youtube/v3/guides/ios_youtube_helper

anche nel YTPlayerView.m (~ linea: 610) Prova questa cambia:

[playerParams setValue:[NSString stringWithFormat: @"%0.00f", self.frame.size.height] forKey:@"height"]; 
// [playerParams setValue:@"100%" forKey:@"height"]; 
[playerParams setValue:[NSString stringWithFormat: @"%0.00f", self.frame.size.width] forKey:@"width"]; 
// [playerParams setValue:@"100%" forKey:@"width"]; 

Spero che questo aiuto

+0

Hm, grazie per il suggerimento, ma in realtà sono più interessato a ciò che è cambiato che ha fatto fallire il mio codice ora. Potrei costruire un iframe da solo, ma preferirei capire perché la tecnica embed non funziona più, o più precisamente perché non riesco più a controllare la dimensione del video in iOS 8. O come potrei controllarlo. – berliner

+0

Questo lettore non può riprodurre video privati, ma può riprodurre video non in elenco. Poiché questa libreria avvolge il giocatore iframe esistente, il comportamento del giocatore dovrebbe essere quasi identico a quello di un giocatore incorporato in una pagina web in un browser mobile. –

2

Ho lavorato su questo per un po 'e ho trovato una soluzione che funziona incredibilmente per i miei scopi. Quello che stava accadendo nel mio caso è che per qualche ragione l'iFrame stava usando un po 'di padding che doveva essere scartato.

È inoltre importante notare che se includi youtube.com come URL di base verrà caricato molto più rapidamente.

Creare una UIWebView nello storyboard e collegarvi la proprietà @property, quindi fare riferimento di seguito.

CGFloat height = self.webView.frame.size.height; 
    CGFloat width = self.webView.frame.size.width; 
    NSString *youTubeVideoCode = @"dQw4w9WgXcQ"; 
    NSString *embedHTML = @"<iframe width=\"%f\" height=\"%f\" src=\"http://www.youtube.com/embed/%@\" frameborder=\"0\" style=\"margin:-8px;padding:0;\" allowfullscreen></iframe>"; 
    NSString *html = [NSString stringWithFormat:embedHTML, width, height, youTubeVideoCode]; 
    self.webView.scrollView.bounces = NO; 
    [self.webView loadHTMLString:html baseURL:[NSURL URLWithString:@"http://www.youtube.com"]]; 
Problemi correlati