Как сделать UIView полноэкранным, когда пользователь поворачивает свое устройство из портретного в альбомный режим

У меня есть UIView это на самом деле YTPlayerView с YouTube-IOS-SDK.

Мне нужно сделать его полноэкранным, когда устройство поворачивается влево или вправо, и вернуть его в не полноэкранный режим, когда устройство возвращается в портретный режим (как в официальном приложении YouTube).

Как я могу добиться такого поведения?

Я не вижу setFullScreenMode функции в YTPlayerViewИнтерфейс.

3 ответа

Это сработало для меня, в Xcode 9.2 и Swift 4

var videoView: UIView!
var playerLayer: AVPlayerLayer!

override func viewDidLayoutSubviews(){
    if UIDeviceOrientationIsLandscape(UIDevice.current.orientation) && !(UIDevice.current.orientation.isFlat) {
        let screenSize = UIScreen.main.bounds
        let screenWidth = screenSize.width
        let screenHeight = screenSize.height
        videoView.frame = CGRect(x: 0, y: 0, width: screenWidth, height: screenHeight)
        playerLayer.frame = videoView.bounds
    }
}

Убедитесь, что ваше устройство может поворачивать дисплей (блокировка портретной ориентации должна быть отключена).

Убедитесь, что вы пытались изменить кадр вида во время вращения устройства?

Вот что я делаю:

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];

    [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context)
     {

     } completion:^(id<UIViewControllerTransitionCoordinatorContext> context)
     {
         UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
         switch (orientation) {
             case UIInterfaceOrientationPortrait:

                 break;
             case UIInterfaceOrientationLandscapeLeft:
             case UIInterfaceOrientationLandscapeRight:
                 [self.testView setFrame:CGRectMake(0, 0, size.width, size.height)];
                 break;
             default:
                 break;
         }
     }];
}
Другие вопросы по тегам