Как разблокировать вращение на одном экране в реакции родного - PullRequest
1 голос
/ 27 января 2020

Я попытался использовать ответную нативную ориентацию в веб-просмотре, чтобы это было единственное представление, которое будет вращаться.

import React, {useEffect} from 'react';
import { WebView } from 'react-native-webview';
import Orientation from "react-native-orientation"

export function GameWebViewScreen({navigation}) {
const link = ****

useEffect(() => {
    Orientation.unlockAllOrientations();
}, [])

return <WebView source={{uri: link}}/>
}

Я получаю TypeError: null в объекте при вызове unlockAllOrientations. Кто-нибудь знает, это проблема, потому что я не настроил собственные файлы, как указано в инструкциях здесь , поскольку у меня еще нет к ним доступа или?

Я также пытался с компонентом класса и получил тот же результат.

Я также открыт для любых других предложений по библиотекам для управления вращением в отдельных представлениях.

1 Ответ

2 голосов
/ 27 января 2020

Вам необходимо установить собственные файлы в соответствии с инструкциями и попытаться выполнить ручное связывание .

Прослушивание изменений ориентации устройства в приложениях React Native и программная установка предпочтительной ориентации для каждого экрана , Работает как на Android, так и на iOS.

Пример: -

import Orientation from 'react-native-orientation'

componentDidMount() {
   Orientation.unlockAllOrientations();
}

componentWillUnmount() {
   Orientation.lockToPortrait();
}

Необходимо установить делегата приложения следующим образом в ios

#import "Orientation.h"

- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
  return [Orientation getOrientation];
}

Android необходимо установить Пакет ориентации

Реализация метода onConfigurationChanged в MainActivity. java

import android.content.Intent; // <--- import 
import android.content.res.Configuration; // <--- import 

public class MainActivity extends ReactActivity {
  @Override
  public void onConfigurationChanged(Configuration newConfig) {
     super.onConfigurationChanged(newConfig);
     Intent intent = new Intent("onConfigurationChanged");
     intent.putExtra("newConfig", newConfig);
     this.sendBroadcast(intent);
  }
}

Вы можете найти больше информации здесь реагировать-родной ориентации

...