Как сделать 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;
}
}];
}