diff --git a/React/CoreModules/RCTAppearance.h b/React/CoreModules/RCTAppearance.h index 085003aa1f..6a1ca700f1 100644 --- a/React/CoreModules/RCTAppearance.h +++ b/React/CoreModules/RCTAppearance.h @@ -11,6 +11,7 @@ #import RCT_EXTERN void RCTEnableAppearancePreference(BOOL enabled); +RCT_EXTERN void RCTOverrideAppearancePreference(NSString *const); @interface RCTAppearance : RCTEventEmitter @end diff --git a/React/CoreModules/RCTAppearance.mm b/React/CoreModules/RCTAppearance.mm index c1c07eecf1..344603323c 100644 --- a/React/CoreModules/RCTAppearance.mm +++ b/React/CoreModules/RCTAppearance.mm @@ -23,6 +23,11 @@ void RCTEnableAppearancePreference(BOOL enabled) { sAppearancePreferenceEnabled = enabled; } +static NSString *sColorSchemeOverride = nil; +void RCTOverrideAppearancePreference(NSString *const colorSchemeOverride) { + sColorSchemeOverride = colorSchemeOverride; +} + static NSString *RCTColorSchemePreference(UITraitCollection *traitCollection) { #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && defined(__IPHONE_13_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0 @@ -30,6 +35,10 @@ static NSString *RCTColorSchemePreference(UITraitCollection *traitCollection) static NSDictionary *appearances; static dispatch_once_t onceToken; + if (sColorSchemeOverride) { + return sColorSchemeOverride; + } + dispatch_once(&onceToken, ^{ appearances = @{ @(UIUserInterfaceStyleLight): RCTAppearanceColorSchemeLight,