Browse Source

[iOS] Fix orientation change in runtime.

bruvzg 2 years ago
parent
commit
974a7a89c6
2 changed files with 6 additions and 0 deletions
  1. 1 0
      doc/classes/DisplayServer.xml
  2. 5 0
      platform/ios/display_server_ios.mm

+ 1 - 0
doc/classes/DisplayServer.xml

@@ -961,6 +961,7 @@
 			<param index="1" name="screen" type="int" default="-1" />
 			<description>
 				Sets the [param screen]'s [param orientation]. See also [method screen_get_orientation].
+				[b]Note:[/b] On iOS, this method has no effect if [member ProjectSettings.display/window/handheld/orientation] is not set to [constant SCREEN_SENSOR].
 			</description>
 		</method>
 		<method name="set_icon">

+ 5 - 0
platform/ios/display_server_ios.mm

@@ -568,6 +568,11 @@ float DisplayServerIOS::screen_get_max_scale() const {
 
 void DisplayServerIOS::screen_set_orientation(DisplayServer::ScreenOrientation p_orientation, int p_screen) {
 	screen_orientation = p_orientation;
+	if (@available(iOS 16.0, *)) {
+		[AppDelegate.viewController setNeedsUpdateOfSupportedInterfaceOrientations];
+	} else {
+		[UIViewController attemptRotationToDeviceOrientation];
+	}
 }
 
 DisplayServer::ScreenOrientation DisplayServerIOS::screen_get_orientation(int p_screen) const {