외관 설정
import {Appearance} from 'react-native';
Appearance
모듈은 사용자의 외관 설정 정보를 제공한다. 예를 들어, 사용자가 선호하는 색상 테마(라이트 모드 또는 다크 모드)와 같은 정보를 확인할 수 있다.
개발자 노트
- Android
- iOS
- Web
Appearance
API는 W3C의 Media Queries 초안에서 영감을 받았다. 색상 스키마 선호도는prefers-color-scheme
CSS 미디어 기능을 기반으로 설계되었다.
색상 스키마 선호도는 Android 10 (API 레벨 29) 이상 기기에서 사용자의 Light 또는 Dark 테마 선호도와 매핑된다.
색상 스키마 선호도는 iOS 13 이상 기기에서 사용자의 Light 또는 Dark Mode 선호도와 매핑된다.
주의: 스크린샷을 찍을 때 기본적으로 색상 스키마가 Light와 Dark 모드 사이에서 깜빡일 수 있다. 이는 iOS가 두 가지 색상 스키마 모두에서 스냅샷을 찍고, 색상 스키마를 업데이트하는 과정이 비동기적으로 이루어지기 때문이다.
예제
Appearance
모듈을 사용해 사용자가 선호하는 다크 색상 테마를 확인할 수 있다:
const colorScheme = Appearance.getColorScheme();
if (colorScheme === 'dark') {
// 다크 색상 테마 사용
}
색상 테마는 즉시 확인할 수 있지만, 이 값은 변할 수 있다(예: 일출 또는 일몰 시 예정된 색상 테마 변경). 사용자가 선호하는 색상 테마에 의존하는 렌더링 로직이나 스타일은 값을 캐싱하기보다 매번 렌더링 시 이 함수를 호출해야 한다. 예를 들어, 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;
외관 설정이 변경될 때 실행되는 이벤트 핸들러를 추가한다.