diff --git a/ios/RNSScreen.mm b/ios/RNSScreen.mm index 65c18f1ddc..aa4fa1adb1 100644 --- a/ios/RNSScreen.mm +++ b/ios/RNSScreen.mm @@ -1725,6 +1725,19 @@ - (void)viewDidLayoutSubviews } #endif } + + if (self.screenView.isPresentedAsNativeModal) { + UIView *superview = self.view.superview; + if (superview != nil) { + // UIKit presents modals inside a UITransitionView. In RTL that container can be mirrored and + // report a negative origin. Copying the frame directly would offset the React view, so align + // it with the container's bounds to stay centered. + CGRect targetFrame = superview.bounds; + if (!CGRectEqualToRect(self.view.frame, targetFrame)) { + self.view.frame = targetFrame; + } + } + } } - (BOOL)isModalWithHeader