728x90
728x90
BlurView
들어가며
- 리액트 네이티브(React Native) 엑스포(Expo) 프로젝트에서 블러 효과를 주는 BlurView 컴포넌트에 대해 간단히 정리해본다.

BlurView
개념
- Expo에서 제공하는 화면의 일부분에 블러(Blur, 흐림 효과)를 적용할 수 있게 해주는 시각적 컴포넌트
- React Native에서는 iOS와 Android의 네이티브 블러 효과를 직접 구현하는 것이 번거롭기 때문에, Expo는 이러한 블러 효과를 쉽게 적용할 수 있도록 @expo-blur@ 패키지를 제공한다.
사용 방법
- @BlurView@는 배경 이미지나 비디오 위에 올려야 효과가 명확하게 보인다.
- iOS에서는 기본적으로 잘 지원되며, Android는 일부 기기에서 제한될 수 있음에 주의한다.
- React Navigation 라이브러리와 함께 @BlurView@를 사용하면, 모달이나 배경 흐림 효과 구현하는 데 유용하다.
- 여러 가지의 시나리오에서 블러 효과를 줄 수 있다.
- 로그인 화면의 배경 흐림 효과
- 하단 바텀시트 뒷배경 블러 처리
- 모달 팝업 뒤의 콘텐츠 흐림 처리
- 이미지 위 텍스트 박스를 강조하기 위한 흐림 배경
패키지 설치
$ npx expo install expo-blur
사용하기
- @BlurView@ 컴포넌트를 @expo-blur@ 패키지에서 불러와준다.
import { BlurView } from 'expo-blur';
- 다음과 같이 @BlueView@ 컴포넌트를 블러 효과를 주고 싶은 컴포넌트의 밑부분에 넣어준다.
<View>
<FlatList />
<BlurView />
</View>
주요 속성
<BlurView intensity={} tint={} style={}>
// ...
</BlurView>
| 속성 | 설명 |
| @intensity@ | 블러의 강도 (0 ~ 100) |
| @tint@ | 블러 색상 (@'light'@, @'dark'@, @'default'@ 등) |
| @ExperimentalBlurMethod@ |
Android에서 블러 효과를 어떻게 구현할지 설정 (@'none'@, @'dimezisBlurView'@) |
| @style@ | 일반적인 React Native 스타일 적용 가능 |
사용 예제
import { Text, StyleSheet, View, SafeAreaView } from 'react-native';
import { BlurView } from 'expo-blur';
export default function App() {
const text = 'Hello, my container is blurring contents underneath!';
return (
<SafeAreaView style={styles.container}>
<View style={styles.background}>
{[...Array(20).keys()].map(i => (
<View
key={`box-${i}`}
style={[styles.box, i % 2 === 1 ? styles.boxOdd : styles.boxEven]}
/>
))}
</View>
<BlurView intensity={100} style={styles.blurContainer}>
<Text style={styles.text}>{text}</Text>
</BlurView>
<BlurView intensity={80} tint="light" style={styles.blurContainer}>
<Text style={styles.text}>{text}</Text>
</BlurView>
<BlurView intensity={90} tint="dark" style={styles.blurContainer}>
<Text style={[styles.text, { color: '#fff' }]}>{text}</Text>
</BlurView>
</SafeAreaView>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
},
blurContainer: {
flex: 1,
padding: 20,
margin: 16,
textAlign: 'center',
justifyContent: 'center',
overflow: 'hidden',
borderRadius: 20,
},
background: {
flex: 1,
flexWrap: 'wrap',
...StyleSheet.absoluteFill,
},
box: {
width: '25%',
height: '20%',
},
boxEven: {
backgroundColor: 'orangered',
},
boxOdd: {
backgroundColor: 'gold',
},
text: {
fontSize: 24,
fontWeight: '600',
},
});

참고 사이트
BlurView
A React component that blurs everything underneath the view.
docs.expo.dev
728x90
728x90
'Programming > React Native' 카테고리의 다른 글
| [React Native] AsyncStorage (1) | 2025.08.11 |
|---|---|
| [React Native] navigate와 replace 메서드의 차이 (react-navigation) (1) | 2025.08.07 |
| [React Native] 로딩 스피너(Loading Spinner) 만들기 (0) | 2025.06.06 |
| [React Native] 화면 간 데이터 전달하기 (React Navigation) (2) | 2025.05.10 |
| [React Native] React Navigation 라이브러리 (0) | 2025.05.06 |
| [React Native] 뒤로가기 기능 막는 방법 (0) | 2025.04.17 |
| [React Native] .jsx 파일 사용 하는 방법 (1) | 2025.04.11 |
| [React Native] StatusBar (react-native, expo-status-bar) (0) | 2025.04.11 |