#ios #youtube-api
#iOS #youtube-api
Вопрос:
Я использую помощник YouTube iOS API для показа видео. Большинство пользователей захотят просматривать видео в полноэкранном режиме, но после просмотра видео приложению необходимо выйти из полноэкранного режима видео, чтобы пользователи могли выполнять связанные задачи. Есть ли способ завершить видео на videoEnded.
Комментарии:
1. Разве вы не можете просто вызвать — (void)PlayerView:(YTPlayerView *)PlayerView didChangeToState:(YTPlayerState)state {} и проверить, когда проигрыватель остановился, а затем выйти из проигрывателя?
2. Я не вижу способа выхода из проигрывателя. Я знаю, что могу отслеживать состояние таким образом, но затем я застреваю в полноэкранном режиме, пока пользователь не нажмет Готово
3. Нельзя ли программно нажать кнопку готово при завершении воспроизведения?
4. Есть ли у вас действие, которое вызывается при нажатии кнопки?
5. Нет. Все это обрабатывается iframe, созданным YouTube (я думаю).
Ответ №1:
В словаре playerVars вы должны установить свойство @"autohide" : @1
, которое заставит видео выходить из полноэкранного режима после завершения видео. Это будет выглядеть примерно так:
NSDictionary *playerVars = @{@"autohide" : @1};
[self.playerView loadWithVideoId:self.videoID playerVars:playerVars];
Ответ №2:
это работа для меня, источникhttps://gist.github.com/akisute/a46c5ec54d27f73b62da
- (void)exitFullScreenVideo:(BOOL)animated completion:(void (^)(void))completion
{
if ([[[UIDevice currentDevice] systemVersion] doubleValue] >= 8.0) {
BOOL isFullScreenVideoContent = NO;
for (UIWindow *window in [UIApplication sharedApplication].windows) {
if ([window.rootViewController.presentedViewController isKindOfClass:NSClassFromString(@"AVFullScreenViewController")]) {
[window.rootViewController dismissViewControllerAnimated:animated completion:^{
window.rootViewController = nil;
window.hidden = YES;
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[window performSelector:NSSelectorFromString(@"release")];
#pragma clang diagnostic pop
completion();
}];
isFullScreenVideoContent = YES;
break;
}
}
if (!isFullScreenVideoContent) {
completion();
}
} else {
completion();
}
}