Expo

Documentation

ScreenOrientation

Screen Orientation is defined as the orientation in which graphics are painted on the device. For example, the figure below has a device in a vertical and horizontal physical orientation, but a portrait screen orientation. For physical device orientation, see the orientation section of Device Motion.
Portrait orientation in different physical orientations
This API allows changing supported screen orientations at runtime. This will take priority over the orientation key in app.json.
On both iOS and Android platforms, changes to the screen orientation will override any system settings or user preferences. On Android, it is possible to change the screen orientation while taking the user's preferred orientation into account. On iOS, user and system settings are not accessible by the application and any changes to the screen orientation will override existing settings.
Platform Compatibility
Android DeviceAndroid EmulatoriOS DeviceiOS SimulatorWeb

This API is pre-installed in managed apps. It is not yet available for bare React Native apps.

import { ScreenOrientation } from 'expo';

Deprecated in favor of ScreenOrientation.lockAsync. Allow a screen orientation.

  • orientation (OrientationLock) -- The orientation lock to apply. See the OrientationLock enum for possible values.

Returns a promise with void value, resolving when the orientation is set.

function changeScreenOrientation() {
  await ScreenOrientation.allowAsync(ScreenOrientation.Orientation.LANDSCAPE);
}

Lock the screen orientation to a particular OrientationLock.

  • orientationLock (OrientationLock) -- The orientation lock to apply. See the OrientationLock enum for possible values.

Returns a promise with void value, resolving when the orientation is set.

  • ERR_SCREEN_ORIENTATION_INVALID_ORIENTATION_LOCK - an invalid OrientationLock was passed in.
  • ERR_SCREEN_ORIENTATION_UNSUPPORTED_ORIENTATION_LOCK - the platform does not support the orientation lock policy.

async function changeScreenOrientation() {
  await ScreenOrientation.lockAsync(ScreenOrientation.OrientationLock.LANDSCAPE_LEFT);
}

  • platformInfo (PlatformOrientationInfo) -- The platform specific lock to apply. See the PlatformOrientationInfo object type for the different platform formats.

Returns a promise with void value, resolving when the orientation is set and rejecting if an invalid option or value is passed.

  • ERR_SCREEN_ORIENTATION_INVALID_ORIENTATION_LOCK - an invalid OrientationLock was passed in.
  • ERR_SCREEN_ORIENTATION_UNSUPPORTED_ORIENTATION_LOCK - the platform does not support the orientation lock policy.

Sets the screen orientation back to the OrientationLock.DEFAULT policy.

Returns a promise with void value, resolving when the orientation is set.

Gets the current screen orientation.

Returns a promise that resolves to an OrientationInfo object value that reflects the current screen orientation.

Gets the current screen orientation lock type.

Returns a promise with an OrientationLock value.

Gets the platform specific screen orientation lock type.

Returns a promise with a PlatformOrientationInfo value.

Returns whether the OrientationLock policy is supported on the device.

Returns a promise that resolves to a boolean value that reflects whether or not the orientationLock is supported.

Invokes the listener function when the screen orientation changes.

  • listener (OrientationChangeListener)

Returns an Subscription object that can later be used to unsuscribe updates to the listener.

Removes all listeners subscribed to orientation change updates.

Unsubscribes the listener associated with the subscription object from all orientation change updates.

  • subscription (Subscription)
    • A subscription object that manages the updates passed to a listener function on an orientation change.

  • Orientation.UNKNOWN - An unknown screen orientation. For example, the device is flat, perhaps on a table.
  • Orientation.PORTRAIT - Portrait interface orientation (right side up or upside down).
  • Orientation.PORTRAIT_UP - Right-side up portrait interface orientation.
  • Orientation.PORTRAIT_DOWN - Upside down portrait interface orientation.
  • Orientation.LANDSCAPE - Landscape interface orientation (right or left).
  • Orientation.LANDSCAPE_LEFT - Left landscape interface orientation.
  • Orientation.LANDSCAPE_RIGHT - Right landscape interface orientation.

An enum whose values can be passed to the lockAsync method.
  • OrientationLock.DEFAULT -- The default orientation. On iOS, this will allow all orientations except Orientation.PORTRAIT_DOWN. On Android, this lets the system decide the best orientation.
  • OrientationLock.ALL -- All four possible orientations
  • OrientationLock.PORTRAIT -- Any portrait orientation.
  • OrientationLock.PORTRAIT_UP -- Right-side up portrait only.
  • OrientationLock.PORTRAIT_DOWN -- Upside down portrait only.
  • OrientationLock.LANDSCAPE -- Any landscape orientation.
  • OrientationLock.LANDSCAPE_LEFT -- Left landscape only.
  • OrientationLock.LANDSCAPE_RIGHT -- Right landscape only.
  • OrientationLock.OTHER -- A platform specific orientation. This is not a valid policy that can be applied in lockAsync.
  • OrientationLock.UNKNOWN -- An unknown screen orientation lock. This is not a valid policy that can be applied in lockAsync.

Each iOS device has a default set of size classes that you can use as a guide when designing your interface.
  • SizeClassIOS.REGULAR
  • SizeClassIOS.COMPACT
  • SizeClassIOS.UNKNOWN

An enum representing the lock policies that can be applied on the web platform, modelled after the W3C specification. These values can be applied through the lockPlatformAsync method.
  • PORTRAIT_PRIMARY
  • PORTRAIT_SECONDARY
  • PORTRAIT
  • LANDSCAPE_PRIMARY
  • LANDSCAPE_SECONDARY
  • LANDSCAPE
  • ANY
  • UNKNOWN

- screenOrientationConstantAndroid (_integer_): A constant to set using the Android native [API](https://developer.android.com/reference/android/R.attr.html#screenOrientation). For example, in order to set the lock policy to [unspecified](https://developer.android.com/reference/android/content/pm/ActivityInfo.html#SCREEN_ORIENTATION_UNSPECIFIED), -1 should be passed in. (Android only)
- screenOrientationArrayIOS (Array[Orientation]): An array of orientations to allow on the iOS platform (iOS only)
- screenOrientationLockWebOrientation (_WebOrientationLock_): A web orientation lock to apply in the browser (web only)

- orientation (_Orientation_): The current orientation of the device
- verticalSizeClass (_SizeClassIOS_): The [vertical size class](https://developer.apple.com/library/archive/featuredarticles/ViewControllerPGforiPhoneOS/TheAdaptiveModel.html) of the device (iOS only)
- horizontalSizeClass (_SizeClassIOS_): The [horizontal size class](https://developer.apple.com/library/archive/featuredarticles/ViewControllerPGforiPhoneOS/TheAdaptiveModel.html) of the device (iOS only)

- orientationLock (_OrientationLock_): The current OrientationLock of the device.
- orientationInfo (_OrientationInfo_): The current OrientationInfo of the device.

- event (_OrientationChangeEvent_): An update with the most recent OrientationChangeEvent.

void

CodeDescription
ERR_SCREEN_ORIENTATION_UNSUPPORTED_ORIENTATION_LOCKThe platform does not support the OrientationLock policy.
ERR_SCREEN_ORIENTATION_INVALID_ORIENTATION_LOCKAn invalid OrientationLock was passed in.