2014-09-16 6 views
9

Mam problemy, których nie mogę zrozumieć.iOS 8 wideo youtube osadzić

Mam ten kod, który działa idealnie w Xcode 5 z 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]; 
} 

Kiedy buduję ten sam kod w Xcode 6 dla iOS 8 następnie wyświetla wideo w WebView lecz jest zdecydowanie za małe.

Czy ktoś może wyjaśnić, co się tutaj dzieje i jak mogę to przezwyciężyć?

+0

Dlaczego nie skorzystać z https://github.com/0xced/XCDYouTubeKit? – thijsai

+0

Może być jeden powód, ponieważ powinna to być oficjalna aplikacja i strona, do której prowadzi link: "Ostrzeżenie: XCDYouTubeKit jest niezgodne z Warunkami korzystania z usługi YouTube". Ale i tak dziękuję. – berliner

+0

@berliner znalazłeś rozwiązanie dla tego problemu inne niż biblioteka stron trzecich? – ViruMax

Odpowiedz

4

miałem ten sam problem, rozwiązać za pomocą tego rozwiązania

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

również w YTPlayerView.m (~ linia: 610) Spróbuj zmienia:

[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"]; 

nadzieję, że to pomaga

+0

Hm, dzięki za podpowiedź, ale bardziej interesuje mnie to, co się zmieniło, co spowodowało, że mój kod zakończył się niepowodzeniem. Mogłem samodzielnie zbudować ramkę iframe, ale wolałbym zrozumieć, dlaczego technika osadzania nie działa, lub dokładniej, dlaczego nie mogę już kontrolować rozmiaru wideo w systemie iOS 8. Lub jak mogę to kontrolować. – berliner

+0

Ten odtwarzacz nie może odtwarzać prywatnych filmów, ale może odtwarzać filmy niepubliczne. Ponieważ biblioteka ta zawija istniejącego odtwarzacza elementów iframe, zachowanie gracza powinno być niemal identyczne z zachowaniem odtwarzacza umieszczonego na stronie internetowej w przeglądarce mobilnej. –

2

Pracowałem nad tym przez chwilę i wymyśliłem rozwiązanie, które zadziwiająco działa dla moich celów. To, co działo się w moim przypadku, z jakiegoś powodu iFrame używało wyściółki, którą trzeba wyrzucić.

Należy również pamiętać, że jeśli podasz adres youtube.com jako podstawowy adres URL, będzie on ładował się znacznie szybciej.

Utwórz UIWebView w swoim scenorysie i połącz do niego @property, a następnie odwołaj się poniżej.

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"]];