Does `requestGeometryUpdate()` Override Orientation Lock by Design?

Hi everyone,

I've been testing the requestGeometryUpdate() API in iOS, and I noticed something unexpected: it allows orientation changes even when the device’s orientation lock is enabled.

Test Setup:

  • Use requestGeometryUpdate() in a SwiftUI sample app to toggle between portrait and landscape (code below).
  • Manually enable orientation lock in Control Center.
  • Press a button to request an orientation change in sample app.
  • Result: The orientation changes even when orientation lock is ON, which seems to override the expected system behavior.

Questions:

  • Is this intended behavior?
  • Is there official documentation confirming whether this is expected? I haven’t found anything in Apple’s Human Interface Guidelines (HIG) or UIKit documentation that explicitly states this.
  • Since this behavior affects a system-wide user setting, could using requestGeometryUpdate() in this way lead to App Store rejection?

Since Apple has historically enforced respecting user settings, I want to clarify whether this approach is compliant.

Would love any official guidance or insights from Apple engineers.

Thanks!

struct ContentView: View {
  @State private var isLandscape = false // Track current orientation state

  var body: some View {
    VStack {
      Text("Orientation Test")
        .font(.title)
        .padding()

      Button(action: toggleOrientation) {
        Text(isLandscape ? "Switch to Portrait" : "Switch to Landscape")
          .bold()
          .padding()
          .background(Color.blue)
          .foregroundColor(.white)
          .cornerRadius(10)
      }
    }
  }

  private func toggleOrientation() {
    guard let scene = UIApplication.shared.connectedScenes.first as? UIWindowScene else {
      print("No valid window scene found")
      return
    }

    // Toggle between portrait and landscape
    let newOrientation: UIInterfaceOrientationMask = isLandscape ? .portrait : .landscapeRight

    let geometryPreferences = UIWindowScene.GeometryPreferences.iOS(interfaceOrientations: newOrientation)

    scene.requestGeometryUpdate(geometryPreferences) { error in
     print("Failed to change orientation: \(error.localizedDescription)")
    }
    self.isLandscape.toggle()
  }
}

@TM_iOSDev

Is this intended behavior?

This is the expected behavior.

You can submit an enhancement request via Feedback Assistant to have the documentation updated.

Once you file the request, please post the FB number here.

If you're not familiar with how to file enhancement requests, take a look at Bug Reporting: How and Why?

Does `requestGeometryUpdate()` Override Orientation Lock by Design?
 
 
Q