2014-09-16 23 views
9

Tôi đang đối mặt với những vấn đề mà tôi dường như không hiểu.iOS 8 youtube video embed

tôi có mã này hoạt động hoàn hảo trong Xcode 5 chạy 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]; 
} 

Khi tôi xây dựng cùng mã trong Xcode 6 dành cho iOS 8 sau đó hiển thị video trong webview nhưng là cách để nhỏ.

Ai có thể giải thích những gì đang xảy ra ở đây và cách tôi có thể khắc phục điều này?

+0

Tại sao không sử dụng https://github.com/0xced/XCDYouTubeKit? – thijsai

+0

Một lý do có thể là vì đây phải là ứng dụng chính thức và trang bạn đang liên kết với các trạng thái: "Cảnh báo: XCDYouTubeKit vi phạm Điều khoản dịch vụ của YouTube". Nhưng cảm ơn anyways. – berliner

+0

@berliner bạn có tìm thấy giải pháp cho vấn đề này ngoài thư viện của bên thứ ba không? – ViruMax

Trả lời

4

tôi đã cùng một vấn đề, tôi giải quyết bằng giải pháp này

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

cũng trong YTPlayerView.m (~ dòng: 610) thử này thay đổi:

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

Hope trợ giúp này

+0

Hm, cảm ơn mẹo, nhưng tôi thực sự quan tâm hơn đến những gì đã thay đổi khiến mã của tôi thất bại ngay bây giờ. Tôi có thể tự xây dựng iframe, nhưng tôi muốn hiểu tại sao kỹ thuật nhúng không hoạt động nữa hoặc chính xác hơn lý do tại sao tôi không thể kiểm soát kích thước của video trong iOS 8. Hoặc cách tôi có thể kiểm soát nó. – berliner

+0

Trình phát này không thể phát video riêng tư nhưng có thể phát video không công khai. Vì thư viện này kết thúc tốt đẹp trình phát nội tuyến iframe hiện tại, hành vi của người chơi phải gần giống với trình phát của trình phát được nhúng trên trang web trong trình duyệt trên thiết bị di động. –

2

Tôi đã làm việc này một thời gian và đã tìm ra giải pháp hoạt động đáng kinh ngạc cho mục đích của tôi. Điều gì đã xảy ra trong trường hợp của tôi là vì một lý do nào đó iFrame đang sử dụng một số phần đệm cần được loại bỏ.

Điều quan trọng cần lưu ý là nếu bạn đưa youtube.com làm URL cơ sở, URL sẽ tải nhanh hơn nhiều.

Tạo UIWebView trong bảng phân cảnh của bạn và kết nối @property với nó, sau đó tham chiếu bên dưới.

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"]]; 
Các vấn đề liên quan