Skip to main content

외관

tsx
import {Appearance} from 'react-native';

Appearance 모듈은 사용자의 외관 설정, 예를 들어 선호하는 색상 스키마(라이트 모드 또는 다크 모드)와 같은 정보를 제공한다.

개발자 노트​

Appearance API는 W3C의 Media Queries 드래프트에서 영감을 받았다. 색상 스킴 선호도는 prefers-color-scheme CSS 미디어 기능을 기반으로 모델링되었다.

예제​

Appearance 모듈을 사용해 사용자가 어두운 색상 스키마를 선호하는지 확인할 수 있다:

tsx
const colorScheme = Appearance.getColorScheme();
if (colorScheme === 'dark') {
// 어두운 색상 스키마 사용
}

색상 스키마는 즉시 사용 가능하지만, 이 값은 변경될 수 있다. 예를 들어 해가 뜨거나 지는 시간에 따라 예약된 색상 스키마 변경이 발생할 수 있다. 사용자 선호 색상 스키마에 의존하는 렌더링 로직이나 스타일은 값을 캐싱하기보다 매 렌더링마다 이 함수를 호출해야 한다. 예를 들어, 색상 스키마 업데이트를 제공하고 구독하는 useColorScheme React 훅을 사용하거나, StyleSheet에 값을 설정하는 대신 인라인 스타일을 사용할 수 있다.

참고 자료

메서드​

getColorScheme()​

tsx
static getColorScheme(): 'light' | 'dark' | null;

현재 사용자가 선호하는 색상 스킴을 나타낸다. 이 값은 나중에 사용자의 직접적인 동작(예: 디바이스 설정에서 테마 선택 또는 setColorScheme을 통한 애플리케이션 수준의 사용자 인터페이스 스타일 선택)이나 일정에 따라(예: 낮/밤 주기에 따른 라이트 및 다크 테마) 업데이트될 수 있다.

지원되는 색상 스킴:

  • light: 사용자가 라이트 색상 테마를 선호함.
  • dark: 사용자가 다크 색상 테마를 선호함.
  • null: 사용자가 선호하는 색상 테마를 지정하지 않음.

참고: useColorScheme 훅도 확인해 보자.

주의: Chrome으로 디버깅할 때 getColorScheme()은 항상 light를 반환한다.


setColorScheme()​

tsx
static setColorScheme('light' | 'dark' | null): void;

애플리케이션이 항상 밝거나 어두운 인터페이스 스타일을 사용하도록 강제한다. 기본값은 null이며, 이 경우 애플리케이션은 시스템의 인터페이스 스타일을 상속한다. 다른 값을 할당하면 새로운 스타일이 애플리케이션과 애플리케이션 내의 모든 네이티브 엘리먼트(알림, 피커 등)에 적용된다.

지원되는 색상 스키마:

  • light: 밝은 사용자 인터페이스 스타일을 적용한다.
  • dark: 어두운 사용자 인터페이스 스타일을 적용한다.
  • null: 시스템의 인터페이스 스타일을 따른다.

참고: 이 변경은 시스템에서 선택한 인터페이스 스타일이나 다른 애플리케이션에서 설정된 스타일에 영향을 미치지 않는다.

addChangeListener()​

tsx
static addChangeListener(
listener: (preferences: {colorScheme: 'light' | 'dark' | null}) => void,
): NativeEventSubscription;

외관 설정이 변경될 때 실행되는 이벤트 핸들러를 추가한다.