Appearance
import {Appearance} from 'react-native';
Appearance
モジュールは、ユーザーの外観設定(ライトモードまたはダークモードなどの好みのカラースキーム)に関する情報を公開します。
開発者向けメモ
- Android
- iOS
- Web
Appearance
API は、W3C の メディアクエリドラフト に触発されています。カラースキームの設定は、prefers-color-scheme
CSS メディア機能 をモデルとしています。
カラースキームの設定は、Android 10(API レベル 29)以降のデバイスでは、ユーザーのライトテーマまたはダークテーマの設定に対応します。
カラースキームの設定は、iOS 13 以降のデバイスでは、ユーザーのライトモードまたはダークモードの設定に対応します。
注:スクリーンショットを撮影すると、デフォルトではカラースキームがライトモードとダークモードの間でちらつく場合があります。これは、iOS が両方のカラースキームでスナップショットを撮影し、カラースキームによるユーザーインターフェースの更新が非同期であるために発生します。
例
Appearance
モジュールを使用して、ユーザーがダークカラースキームを好むかどうかを判断できます。
const colorScheme = Appearance.getColorScheme();
if (colorScheme === 'dark') {
// Use dark color scheme
}
カラースキームはすぐに利用できますが、これは後で変更される可能性があります(日の出や日没時のスケジュールされたカラースキームの変更など)。ユーザーが好むカラースキームに依存するレンダリングロジックまたはスタイルは、値をキャッシュするのではなく、レンダリングごとにこの関数を呼び出そうとする必要があります。たとえば、カラースキームの更新を提供および購読する useColorScheme
React フックを使用するか、StyleSheet
に値を設定するのではなく、インラインスタイルを使用できます。
リファレンス
メソッド
getColorScheme()
static getColorScheme(): 'light' | 'dark' | null;
現在ユーザーが好むカラースキームを示します。値は、ユーザーの直接操作(デバイス設定でのテーマ選択、または `setColorScheme` を介したアプリケーションレベルで選択されたユーザーインターフェーススタイルなど)、またはスケジュール(昼夜サイクルに従うライトテーマとダークテーマなど)によって後で更新される場合があります。
サポートされているカラースキーム
light
:ユーザーはライトカラースキームを好みます。dark
:ユーザーはダークカラースキームを好みます。- null:ユーザーは好みのカラースキームを示していません。
useColorScheme
フックも参照してください。
注:Chrome でデバッグする場合、
getColorScheme()
は常に `light` を返します。
setColorScheme()
static setColorScheme('light' | 'dark' | null): void;
アプリケーションに常にライトまたはダークのインターフェーススタイルを採用させるようにします。デフォルト値は `null` で、アプリケーションはシステムのインターフェーススタイルを継承します。異なる値を割り当てると、新しいスタイルはアプリケーションとアプリケーション内のすべてのネイティブ要素(アラート、ピッカーなど)に適用されます。
サポートされているカラースキーム
light
:ライトユーザーインターフェーススタイルを適用します。dark
:ダークユーザーインターフェーススタイルを適用します。- null:システムのインターフェーススタイルに従います。
注:この変更は、システムで選択されたインターフェーススタイルや他のアプリケーションで設定されたスタイルには影響しません。
addChangeListener()
static addChangeListener(
listener: (preferences: {colorScheme: 'light' | 'dark' | null}) => void,
): NativeEventSubscription;
外観設定が変更されたときに発生するイベントハンドラーを追加します。