바르고 뜨겁게

react-native IOS dark mode 미사용, 사용 안하기 본문

자바스크립트/React Native

react-native IOS dark mode 미사용, 사용 안하기

RightHot 2019. 11. 21. 15:00

https://github.com/facebook/react-native/issues/26619#issuecomment-536191518

https://github.com/facebook/react-native/issues/26299


IOS 13 버전에 다크모드가 추가되면서 디폴트 TEXT 컬러가 흰색으로 바껴서 밝은 배경에선 보이지 않는다거나,

StatusBar 아이콘이 흰색으로 바껴서 보이지 않는 등의 문제점들이 발생

따라서, 다크모드를 사용 하지 않기 위해선 react native 코드를 아래처럼 수정


Light-mode 강제적용

appDelegate.m

  if (@available(iOS 13.0, *)) {
  rootView.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
}

plist

<key>UIUserInterfaceStyle</key>
<string>Light</string>

StatusBar barStyle 미 동작시 처리
  • XCODE 실행

  • 아래 폴더로 이동

    Pods/Development Pods/React-Core/Modules/RCTStatusBarManager.m

  • 코드 수정

    RCT_ENUM_CONVERTER(UIStatusBarStyle, (@{
    @"default": @(UIStatusBarStyleDefault),
    @"light-content": @(UIStatusBarStyleLightContent),
    @"dark-content": @(UIStatusBarStyleDefault),
    }), UIStatusBarStyleDefault, integerValue);
    #pragma clang diagnostic push
    #pragma clang diagnostic ignored "-Wunguarded-availability"

    RCT_ENUM_CONVERTER(UIStatusBarStyle, (@{
    @"default": @(UIStatusBarStyleDefault),
    @"light-content": @(UIStatusBarStyleLightContent),
    @"dark-content": (@available(iOS 13.0, *)) ? @(UIStatusBarStyleDarkContent) : @(UIStatusBarStyleDefault),
    }), UIStatusBarStyleDefault, integerValue);

    #pragma clang diagnostic pop

    위의 코드를 아래 처럼 수정한다.



Comments