Как заставить видео YouTube выходить из полноэкранного режима, когда видео готово

#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();
        }
    }