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 Hook,因為它提供並訂閱色彩配置更新,或者您可以使用內嵌樣式,而不是在 StyleSheet
中設定值。
參考
方法
getColorScheme()
static getColorScheme(): 'light' | 'dark' | null;
指出目前使用者偏好的色彩配置。該值稍後可能會更新,無論是透過使用者直接操作(例如,在裝置設定中選取主題,或透過 setColorScheme
選取應用程式層級的使用者介面樣式),或是在排程上(例如,遵循日/夜週期的淺色和深色主題)。
支援的色彩配置
light
:使用者偏好淺色主題。dark
:使用者偏好深色主題。- null:使用者未指明偏好的色彩主題。
另請參閱:useColorScheme
Hook。
注意:使用 Chrome 進行偵錯時,
getColorScheme()
將始終傳回light
。
setColorScheme()
static setColorScheme('light' | 'dark' | null): void;
強制應用程式始終採用淺色或深色介面樣式。預設值為 null
,這會導致應用程式繼承系統的介面樣式。如果您指派不同的值,則新樣式會套用至應用程式以及應用程式內的所有原生元素(Alerts、Pickers 等)。
支援的色彩配置
light
:套用淺色使用者介面樣式。dark
:套用深色使用者介面樣式。- null:遵循系統的介面樣式。
注意:此變更不會影響系統選取的介面樣式或在其他應用程式中設定的任何樣式。
addChangeListener()
static addChangeListener(
listener: (preferences: {colorScheme: 'light' | 'dark' | null}) => void,
): NativeEventSubscription;
新增一個事件處理常式,當外觀偏好設定變更時會觸發。