Skip to content

Commit 96eeac2

Browse files
generatedunixname89002005232357meta-codesync[bot]
authored andcommitted
Revert D127555263: Fix StatusBar style and visibility on iOS 27
Differential Revision: D127555263 Original commit changeset: 9a6d21236987 Original Phabricator Diff: D127555263 fbshipit-source-id: 3b4ff52a41f53277841288d2c339d0d5277eb7ba
1 parent fe7d72f commit 96eeac2

15 files changed

Lines changed: 15 additions & 418 deletions

File tree

‎packages/react-native/Libraries/AppDelegate/RCTDefaultReactNativeFactoryDelegate.mm‎

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -14,32 +14,9 @@
1414
#endif
1515

1616
#import <RCTAnimatedModuleProvider/RCTAnimatedModuleProvider.h>
17-
#import <React/RCTStatusBarAppearance.h>
1817
#import <react/featureflags/ReactNativeFeatureFlags.h>
1918
#import <react/nativemodule/defaults/DefaultTurboModules.h>
2019

21-
@interface RCTRootViewController : UIViewController
22-
@end
23-
24-
@implementation RCTRootViewController
25-
26-
- (UIStatusBarStyle)preferredStatusBarStyle
27-
{
28-
return RCTStatusBarAppearance.style;
29-
}
30-
31-
- (BOOL)prefersStatusBarHidden
32-
{
33-
return RCTStatusBarAppearance.hidden;
34-
}
35-
36-
- (UIStatusBarAnimation)preferredStatusBarUpdateAnimation
37-
{
38-
return RCTStatusBarAppearance.updateAnimation;
39-
}
40-
41-
@end
42-
4320
@implementation RCTDefaultReactNativeFactoryDelegate {
4421
// C++ Native Animated provider, created once on first use (getTurboModule: may be called
4522
// concurrently for different module names).
@@ -58,7 +35,7 @@ - (NSURL *_Nullable)sourceURLForBridge:(nonnull RCTBridge *)bridge
5835

5936
- (UIViewController *)createRootViewController
6037
{
61-
return [RCTRootViewController new];
38+
return [UIViewController new];
6239
}
6340

6441
- (void)setRootView:(UIView *)rootView toRootViewController:(UIViewController *)rootViewController

‎packages/react-native/Libraries/AppDelegate/RCTUIConfiguratorProtocol.h‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ NS_ASSUME_NONNULL_BEGIN
4141

4242
/**
4343
* It creates the RootViewController.
44-
* By default, it creates a view controller that returns the `RCTStatusBarAppearance` values.
44+
* By default, it creates a new instance of a `UIViewController`.
4545
* You can override it to provide your own initial ViewController.
4646
*
4747
* @return: an instance of `UIViewController`.

‎packages/react-native/React/Base/RCTStatusBarAppearance.h‎

Lines changed: 0 additions & 26 deletions
This file was deleted.

‎packages/react-native/React/Base/RCTStatusBarAppearance.mm‎

Lines changed: 0 additions & 62 deletions
This file was deleted.

‎packages/react-native/React/CoreModules/RCTStatusBarManager.mm‎

Lines changed: 9 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
#import <React/RCTEventDispatcherProtocol.h>
1212
#import <React/RCTInitializing.h>
1313
#import <React/RCTLog.h>
14-
#import <React/RCTStatusBarAppearance.h>
1514
#import <React/RCTUtils.h>
1615

1716
#import <FBReactNativeSpec/FBReactNativeSpec.h>
@@ -69,28 +68,6 @@ static BOOL RCTViewControllerBasedStatusBarAppearance()
6968
return value;
7069
}
7170

72-
// UIKit makes the app-level setters no-ops only for apps built with the iOS 27 SDK.
73-
static BOOL RCTAppLevelStatusBarIsNoOp()
74-
{
75-
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 270000
76-
if (@available(iOS 27.0, *)) {
77-
return YES;
78-
}
79-
#endif
80-
return NO;
81-
}
82-
83-
static void RCTWarnAppLevelStatusBarUnavailable()
84-
{
85-
static dispatch_once_t onceToken;
86-
dispatch_once(&onceToken, ^{
87-
RCTLogWarn(
88-
@"StatusBar has no effect because UIViewControllerBasedStatusBarAppearance is NO in Info.plist. "
89-
@"Apps built with the iOS 27 SDK cannot use the app-level status bar API that this setting uses. "
90-
@"Set UIViewControllerBasedStatusBarAppearance to YES to control the status bar from JavaScript.");
91-
});
92-
}
93-
9471
RCT_EXPORT_MODULE()
9572

9673
+ (BOOL)requiresMainQueueSetup
@@ -170,32 +147,30 @@ - (void)setStyle:(NSString *)style animated:(BOOL)animated
170147
{
171148
dispatch_async(dispatch_get_main_queue(), ^{
172149
UIStatusBarStyle statusBarStyle = [RCTConvert UIStatusBarStyle:style];
173-
[RCTStatusBarAppearance setStyle:statusBarStyle animated:animated];
174-
if (!RCTViewControllerBasedStatusBarAppearance()) {
150+
if (RCTViewControllerBasedStatusBarAppearance()) {
151+
RCTLogWarn(@"RCTStatusBarManager is a no-op when \
152+
UIViewControllerBasedStatusBarAppearance is YES; set the status bar from your view controller instead");
153+
} else {
175154
#pragma clang diagnostic push
176155
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
177156
[RCTSharedApplication() setStatusBarStyle:statusBarStyle animated:animated];
178-
#pragma clang diagnostic pop
179-
if (RCTAppLevelStatusBarIsNoOp()) {
180-
RCTWarnAppLevelStatusBarUnavailable();
181-
}
182157
}
158+
#pragma clang diagnostic pop
183159
});
184160
}
185161

186162
- (void)setHidden:(BOOL)hidden withAnimation:(NSString *)withAnimation
187163
{
188164
dispatch_async(dispatch_get_main_queue(), ^{
189165
UIStatusBarAnimation animation = [RCTConvert UIStatusBarAnimation:withAnimation];
190-
[RCTStatusBarAppearance setHidden:hidden withAnimation:animation];
191-
if (!RCTViewControllerBasedStatusBarAppearance()) {
166+
if (RCTViewControllerBasedStatusBarAppearance()) {
167+
RCTLogWarn(@"RCTStatusBarManager is a no-op when \
168+
UIViewControllerBasedStatusBarAppearance is YES; set the status bar from your view controller instead");
169+
} else {
192170
#pragma clang diagnostic push
193171
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
194172
[RCTSharedApplication() setStatusBarHidden:hidden withAnimation:animation];
195173
#pragma clang diagnostic pop
196-
if (RCTAppLevelStatusBarIsNoOp()) {
197-
RCTWarnAppLevelStatusBarUnavailable();
198-
}
199174
}
200175
});
201176
}

‎packages/react-native/React/Fabric/Mounting/ComponentViews/Modal/RCTFabricModalHostViewController.mm‎

Lines changed: 2 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,13 @@
88
#import "RCTFabricModalHostViewController.h"
99

1010
#import <React/RCTLog.h>
11-
#import <React/RCTStatusBarAppearance.h>
1211
#import <React/RCTSurfaceTouchHandler.h>
1312

1413
@implementation RCTFabricModalHostViewController {
1514
CGRect _lastViewBounds;
1615
#if !TARGET_OS_TV
1716
RCTSurfaceTouchHandler *_touchHandler;
1817
#endif
19-
BOOL _hasCapturedStatusBar;
20-
UIStatusBarStyle _capturedStatusBarStyle;
21-
BOOL _capturedStatusBarHidden;
22-
UIStatusBarStyle _jsStatusBarStyleAtCapture;
23-
BOOL _jsStatusBarHiddenAtCapture;
2418
}
2519

2620
- (instancetype)init
@@ -52,37 +46,15 @@ - (void)loadView
5246
#endif
5347
}
5448

55-
- (void)captureStatusBarAppearance
56-
{
57-
UIStatusBarManager *statusBarManager = RCTUIStatusBarManager();
58-
_hasCapturedStatusBar = YES;
59-
_capturedStatusBarStyle = statusBarManager.statusBarStyle;
60-
_capturedStatusBarHidden = statusBarManager.isStatusBarHidden;
61-
_jsStatusBarStyleAtCapture = RCTStatusBarAppearance.style;
62-
_jsStatusBarHiddenAtCapture = RCTStatusBarAppearance.hidden;
63-
}
64-
6549
#if !TARGET_OS_TV
66-
// Keep the status bar from before the modal until JS changes it.
6750
- (UIStatusBarStyle)preferredStatusBarStyle
6851
{
69-
if (_hasCapturedStatusBar && RCTStatusBarAppearance.style == _jsStatusBarStyleAtCapture) {
70-
return _capturedStatusBarStyle;
71-
}
72-
return RCTStatusBarAppearance.style;
52+
return [RCTUIStatusBarManager() statusBarStyle];
7353
}
7454

7555
- (BOOL)prefersStatusBarHidden
7656
{
77-
if (_hasCapturedStatusBar && RCTStatusBarAppearance.hidden == _jsStatusBarHiddenAtCapture) {
78-
return _capturedStatusBarHidden;
79-
}
80-
return RCTStatusBarAppearance.hidden;
81-
}
82-
83-
- (UIStatusBarAnimation)preferredStatusBarUpdateAnimation
84-
{
85-
return RCTStatusBarAppearance.updateAnimation;
57+
return [RCTUIStatusBarManager() isStatusBarHidden];
8658
}
8759
#endif
8860

‎packages/react-native/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm‎

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,6 @@
1717

1818
#import "RCTFabricModalHostViewController.h"
1919

20-
@interface RCTFabricModalHostViewController ()
21-
- (void)captureStatusBarAppearance;
22-
@end
23-
2420
using namespace facebook::react;
2521

2622
#if !TARGET_OS_TV
@@ -177,7 +173,6 @@ - (void)ensurePresentedOnlyIfNeeded
177173
[self saveAccessibilityFocusedView];
178174
self.viewController.presentationController.delegate = self;
179175
self.viewController.modalInPresentation = _modalInPresentation;
180-
[self.viewController captureStatusBarAppearance];
181176

182177
_isPresented = YES;
183178
[self presentViewController:self.viewController

‎packages/rn-tester/RNTester/Info.plist‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,6 @@
8181
<string>UIInterfaceOrientationPortraitUpsideDown</string>
8282
</array>
8383
<key>UIViewControllerBasedStatusBarAppearance</key>
84-
<true/>
84+
<false/>
8585
</dict>
8686
</plist>

‎packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj‎

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
5C60EB1C226440DB0018C04F /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5C60EB1B226440DB0018C04F /* AppDelegate.mm */; };
1818
602160B9478DAFF2BAB56595 /* RCTUtilsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = D5D13FB1445C5C19639921CC /* RCTUtilsTests.m */; };
1919
79B29C2E2E607A99007612A5 /* SceneDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 79B29C2D2E607A99007612A5 /* SceneDelegate.mm */; };
20-
7F806D4D4D97AD6403558B35 /* RCTStatusBarAppearanceTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67B0814814F7C07E196BC295 /* RCTStatusBarAppearanceTests.mm */; };
2120
8145AE06241172D900A3F8DA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8145AE05241172D900A3F8DA /* LaunchScreen.storyboard */; };
2221
832F45BB2A8A6E1F0097B4E6 /* SwiftTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 832F45BA2A8A6E1F0097B4E6 /* SwiftTest.swift */; };
2322
A975CA6C2C05EADF0043F72A /* RCTNetworkTaskTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A975CA6B2C05EADE0043F72A /* RCTNetworkTaskTests.m */; };
@@ -95,7 +94,6 @@
9594
4C706D402EE4AF9BE838CBA9 /* libPods-RNTester.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNTester.a"; sourceTree = BUILT_PRODUCTS_DIR; };
9695
51BC9297B6C3163C14532020 /* Pods-RNTester.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTester.release.xcconfig"; path = "Target Support Files/Pods-RNTester/Pods-RNTester.release.xcconfig"; sourceTree = "<group>"; };
9796
5C60EB1B226440DB0018C04F /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = RNTester/AppDelegate.mm; sourceTree = "<group>"; };
98-
67B0814814F7C07E196BC295 /* RCTStatusBarAppearanceTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTStatusBarAppearanceTests.mm; sourceTree = "<group>"; };
9997
79B29C2C2E607A99007612A5 /* SceneDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SceneDelegate.h; path = RNTester/SceneDelegate.h; sourceTree = "<group>"; };
10098
79B29C2D2E607A99007612A5 /* SceneDelegate.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = SceneDelegate.mm; path = RNTester/SceneDelegate.mm; sourceTree = "<group>"; };
10199
8145AE05241172D900A3F8DA /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = RNTester/LaunchScreen.storyboard; sourceTree = "<group>"; };
@@ -352,7 +350,6 @@
352350
E7DB20D022B2BAA5005AC45F /* RCTURLUtilsTests.m */,
353351
D5D13FB1445C5C19639921CC /* RCTUtilsTests.m */,
354352
E7DB20B322B2BAA4005AC45F /* RNTesterUnitTestsBundle.js */,
355-
67B0814814F7C07E196BC295 /* RCTStatusBarAppearanceTests.mm */,
356353
);
357354
path = RNTesterUnitTests;
358355
sourceTree = "<group>";
@@ -781,7 +778,6 @@
781778
E7DB20E922B2BAA6005AC45F /* RCTComponentPropsTests.m in Sources */,
782779
E7DB20D822B2BAA6005AC45F /* RCTJSONTests.m in Sources */,
783780
602160B9478DAFF2BAB56595 /* RCTUtilsTests.m in Sources */,
784-
7F806D4D4D97AD6403558B35 /* RCTStatusBarAppearanceTests.mm in Sources */,
785781
);
786782
runOnlyForDeploymentPostprocessing = 0;
787783
};

0 commit comments

Comments
 (0)