Skip to content

Commit fa65b15

Browse files
Zack Argylefacebook-github-bot
Zack Argyle
authored andcommitted
Add RCTOverrideAppearancePreference to iOS Appearance module
Summary: In order to enable more fine-grained control of theming in brownfield apps, this adds RCTOverrideAppearancePreference to RCTAppearance. ## Changelog: [iOS] [Added] - Adds RCTOverrideAppearancePreference to the iOS Appearance module Reviewed By: sammy-SC Differential Revision: D19187657 fbshipit-source-id: 52783c497d32d36af2523fce6f040d6cfb5aac3c
1 parent d43059d commit fa65b15

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

React/CoreModules/RCTAppearance.h

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#import <React/RCTEventEmitter.h>
1212

1313
RCT_EXTERN void RCTEnableAppearancePreference(BOOL enabled);
14+
RCT_EXTERN void RCTOverrideAppearancePreference(NSString *const);
1415

1516
@interface RCTAppearance : RCTEventEmitter <RCTBridgeModule>
1617
@end

React/CoreModules/RCTAppearance.mm

+9
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,22 @@ void RCTEnableAppearancePreference(BOOL enabled) {
2323
sAppearancePreferenceEnabled = enabled;
2424
}
2525

26+
static NSString *sColorSchemeOverride = nil;
27+
void RCTOverrideAppearancePreference(NSString *const colorSchemeOverride) {
28+
sColorSchemeOverride = colorSchemeOverride;
29+
}
30+
2631
static NSString *RCTColorSchemePreference(UITraitCollection *traitCollection)
2732
{
2833
#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && defined(__IPHONE_13_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0
2934
if (@available(iOS 13.0, *)) {
3035
static NSDictionary *appearances;
3136
static dispatch_once_t onceToken;
3237

38+
if (sColorSchemeOverride) {
39+
return sColorSchemeOverride;
40+
}
41+
3342
dispatch_once(&onceToken, ^{
3443
appearances = @{
3544
@(UIUserInterfaceStyleLight): RCTAppearanceColorSchemeLight,

0 commit comments

Comments
 (0)