React Native, ориентация на выставочном экране

#ios #react-native #expo #screen-orientation

Вопрос:

Я работаю над проектом IOS React Native (используя expo с простым рабочим процессом). По умолчанию мое приложение использует портретный режим, но иногда мне нужно изменить ориентацию экрана на альбомный режим. Я использую библиотеку expo-screen-orientation для изменения ориентации экрана. Когда приложение меняет ориентацию экрана, у меня возникает проблема в выпущенном приложении, хотя в режиме отладки оно работает идеально (как симулятор IOS, так и устройство IOS). В режиме выпуска у меня проблема с вырезанным экраном. Пожалуйста, проверьте фотографии в приложении

 import { StatusBar } from 'expo-status-bar';
import {StyleSheet, Text, View, Button} from 'react-native';
import * as ScreenOrientation from 'expo-screen-orientation';

export default function App() {

  const foo = async()=>{
    await ScreenOrientation.lockAsync(ScreenOrientation.OrientationLock.LANDSCAPE_LEFT);
  }

  return (
    <View style={styles.container}>
      <Text style={{paddingTop:50}}>Open up App.js to start working on your app!</Text>
      <Button title="Rotate" onPress={foo}/>
      <StatusBar style="auto" />
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#cccccc',
    alignItems: 'center',
    justifyContent: 'flex-start',
  },
});
 

Портретный режим


Ландшафтный режим с вырезанным экраном

Ландшафтный режим с вырезанным экраном

Ответ №1:

Произошла ошибка с expo-обновлениями с expo SDK 43, вам нужно будет обновить expo-updates до версии 0.10.15 в вашем package.json, затем установить npm и запустить pod install. Это устранило проблему для меня. Другие отметили, что понижение expo до SDK 42 также исправило ситуацию.

Дополнительная информация здесь: https://github.com/expo/expo/issues/14967#issuecomment-966811190

Комментарии:

1. Я обновил expo-обновления до 0.10.15, и теперь проблема исчезает. Спасибо за быстрый ответ