#react-native #iframe #youtube-api #expo #youtube-iframe-api
#реагировать-родной #фрейм #youtube-api #Экспо #youtube-iframe-api
Вопрос:
Я хочу переключить плеер в ландшафтный режим по нажатию полноэкранной кнопки в графическом интерфейсе проигрывателя. Я использую expo, поэтому я использовал ориентацию expo, я могу переключиться в ландшафтный режим, вызвав функцию onfullscreenchange prop, но после выхода из полноэкранного режима приложение заблокировано в ландшафтном режиме. Как мне это исправить?
мой код:
VideoPlayer.js
import React from "react"; import { View, Dimensions } from "react-native"; import YoutubePlayer from "react-native-youtube-iframe"; import * as ScreenOrientation from "expo-screen-orientation"; const VideoPlayer = () =gt; { function setOrientation() { if (Dimensions.get("window").height gt; Dimensions.get("window").width) { //Device is in portrait mode, rotate to landscape mode. ScreenOrientation.lockAsync(ScreenOrientation.OrientationLock.LANDSCAPE); } else { //Device is in landscape mode, rotate to portrait mode. ScreenOrientation.lockAsync(ScreenOrientation.OrientationLock.PORTRAIT); } } return ( lt;View style={{ width: "100%", height: 220, }} gt; lt;YoutubePlayer height={300} play={false} videoId={"Dv7gLpW91DM"} onFullScreenChange={setOrientation} /gt; lt;/Viewgt; ); }; export default VideoPlayer;
Ответ №1:
Вы можете использовать логическое значение, возвращенное из onFullScreenChange, чтобы определить, находится ли плеер в полноэкранном режиме или нет, и оттуда установить правильную ориентацию, сейчас я не могу проверить, но это должно быть что-то вроде этого
onFullScreenChange={isFullscreen =gt; { if(isFullscreen) { setOrientationToPortrait() } else { setOrientationToLandscape() } }
Комментарии:
1. да, это работает, спасибо за помощь