Я нашел обходной путь, и это хорошо работает для меня.
Прежде всего, проблемы зависят от размера webView
, построенного внутри YTPlayerView
. Например, если у вас есть 320x200 playerView, попробуйте заставить ваше видео на 720hd не работать, потому что класс iPrame youtube Player переключится на лучшее разрешение в соответствии с размером вашего игрока (в этом случае небольшое качество, потому что у вас есть 320x200).
Вы можете видеть это SO answer, которые объясняют эту проблему.
Когда вы импортировали YTPlayerView
класс для вашего проекта у вас есть два файла: YTPlayerView.h
и YTPlayerView.m
YTPlayerView.m (Update работать также на IPADS)
Я изменил функцию, в которой веб-представление инициализируется с помощью специального размера (разрешение 4 КБ), и до последней части я добавил возможность масштабирования Содержание е и восстановить исходный кадр, как это:
- (UIWebView *)createNewWebView {
CGRect frame = CGRectMake(0.0, 0.0, 4096.0, 2160.0); //4k resolution
UIWebView *webView = [[UIWebView alloc] initWithFrame:frame];
//UIWebView *webView = [[UIWebView alloc] initWithFrame:self.bounds];
webView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
webView.scrollView.scrollEnabled = NO;
webView.scrollView.bounces = NO;
if ([self.delegate respondsToSelector:@selector(playerViewPreferredWebViewBackgroundColor:)]) {
webView.backgroundColor = [self.delegate playerViewPreferredWebViewBackgroundColor:self];
if (webView.backgroundColor == [UIColor clearColor]) {
webView.opaque = NO;
}
}
webView.scalesPageToFit = YES;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
CGSize contentSize = webView.scrollView.contentSize;
CGSize viewSize = self.bounds.size;
float scale = viewSize.width/contentSize.width;
webView.scrollView.minimumZoomScale = scale;
webView.scrollView.maximumZoomScale = scale;
webView.scrollView.zoomScale = scale;
// center webView after scaling..
[webView setFrame:CGRectMake(0.0, self.frame.origin.y/3, 4096.0, 2160.0)];
} else {
webView.frame = self.bounds;
}
[webView reload];
return webView;
}
Надеется, что это помогает, кто пытается использовать оригинальный плеер Youtube в его проекте.
P.S.: Все мои попытки были сделали с быстрым проектом и следующими переменными:
var playerVars:Dictionary =
["playsinline":"1",
"autoplay":"1",
"modestbranding":"1",
"rel":"0",
"controls":"0",
"fs":"0",
"origin":"https://www.example.com",
"enablejsapi":"1",
"iv_load_policy":"3",
"showinfo":"0"]
Использование функций:
self.playerView.load(withVideoId: "Rk6_hdRtJOE", playerVars: self.playerVars)
и метод последующей форсировать разрешение:
self.playerView.loadVideo(byId: "Rk6_hdRtJOE", startSeconds: 0.0, suggestedQuality: YTPlaybackQuality.HD720)
О iPads:
Как сообщил Эдвард в комментариях, на iPads возникла небольшая проблема, потому что эти устройства, похоже, не применяются scalesPageToFit
. Цель состоит в том, чтобы проверить, является ли устройство iPad, затем масштабировать (масштабирование) scrollView
, чтобы разместить небольшие границы обзора. Я тестировал свой iPad, и он работает. Дай мне знать.
Спасибо. Завтра я попробую. – Edward
Это решение, похоже, работает только на iPhone, есть ли способ заставить его работать на iPads? – Edward
@Edward У вас есть абсолютная причина: спасибо за ваш отчет, я исправил функцию работы на iPad. –