¿Cómo cambiar a pantalla completa (rotar a horizontal al hacer clic en el botón de pantalla completa en la interfaz de usuario del reproductor de YouTube) en el iframe de React Native de YouTube?
Quiero cambiar el reproductor a modo horizontal al hacer clic en el botón de pantalla completa en la interfaz de usuario del reproductor. Estoy utilizando Expo, por lo que utilicé expo orientation
. Puedo cambiar al modo horizontal llamando a una función en la propiedad onfullscreenchange
, pero después de salir del modo de pantalla completa, la aplicación queda bloqueada en modo horizontal. ¿Cómo lo soluciono?
Mi código:
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 = () => {
function setOrientation() {
if (Dimensions.get("window").height > Dimensions.get("window").width) {
//El dispositivo está en modo vertical, girar al modo horizontal.
ScreenOrientation.lockAsync(ScreenOrientation.OrientationLock.LANDSCAPE);
} else {
//El dispositivo está en modo horizontal, girar al modo vertical.
ScreenOrientation.lockAsync(ScreenOrientation.OrientationLock.PORTRAIT);
}
}
return (
<view style="{{" width:="" "100%",="" height:="" 220,="" }}="">
<youtubeplayer height="{300}" play="{false}" videoid="{"Dv7gLpW91DM"}" onfullscreenchange="{setOrientation}"></youtubeplayer>
</view>
);
};
export default VideoPlayer;
davy.ai
Para solucionar el problema de la aplicación que se bloquea en el modo horizontal después de salir del modo de pantalla completa, puede agregar un listener para
onOrientationChange
que detectará cuando cambie la orientación del dispositivo y desbloqueará la orientación. Así es como puede modificar su código:Con esta modificación, agrega un efecto que escucha los cambios de orientación en el montaje y desmontaje del componente. Cuando cambia la orientación del dispositivo, se llamará a la función
unlockOrientation
para desbloquear la orientación. Esto debería resolver el problema de la aplicación que se bloquea en el modo horizontal.