0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

React Nativeでライトモードを強制する

Posted at

はじめに

スマートフォンがダークモードに対応してから、今ではスマホアプリでもウェブサイトでもダークモードに対応しているのが珍しくなくなりました。
私の周りではダークモードを使っている人がほとんどで、私も常時ダークモードにしています。

ただ、開発者の視点ではダークモード対応は機能として必須ではないため、個人アプリの開発や後回しにしがちだと思います。
そんなときは、端末のダークモード設定を無視し、アプリ上では常にライトモードにすることができます。

実装

iOS

/* AppRoot/ios/AppName/AppDelegate.m */

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
#ifdef FB_SONARKIT_ENABLED
  InitializeFlipper(application);
#endif

  ...

  /**
   * この3行を追加
   * iOS13以降でライトモードを強制する
   */
  if (@available(iOS 13, *)) {
    self.window.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
  }

  return YES;
}

Android

/* AppRoot/android/app/src/main/java/com/AppName/MainApplication.java */

package com.AppName

// この行を追加
import androidx.appcompat.app.AppCompatDelegate;
import android.app.Application;
  ...

  @Override
  public void onCreate() {
    super.onCreate();
    SoLoader.init(this, /* native exopackage */ false);
    initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
     // この行を追加
    AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
  }

Expoの場合

app.json

{
  "expo": {
    "userInterfaceStyle": "light",
  }
}

expo.userInterfaceStyleは一括設定なので、
下記のように個別に設定することも可能

{
  "expo": {
    "userInterfaceStyle": "automatic",
    "ios": {
      "userInterfaceStyle": "light",
    }
  }
}
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?