@danielsaraldi/react-native-blur-view

中文文档
3.2.0发布于 2026/10/26MITTypeScriptCommonJS零依赖近 30 天下载 5.7万

一个简单的模糊视图, 反应本地

中文使用文档
文档目录24 节
  1. 内容提要
  2. 安装
  3. 使用量
  4. 使用列表
  5. 使用 Modal
  6. 使用 ImageBackground
  7. 构成部分
  8. BlurView
  9. BlurTarget
  10. VibrancyView
  11. 类型
  12. 模糊类型
  13. 效果样式
  14. 迁移到 3.x
  15. 为什么是这个变化?
  16. 平台差异
  17. 机器人
  18. iOS系统
  19. tvOS 视频
  20. 博览
  21. 类型脚本支持
  22. 其他图书馆
  23. 捐款
  24. 许可证

@danielsaraldi/react-native-blur-view 🌫️

一个简单的模糊视图, 反应本地基于 @react-native-community/blur。 。 。 .

支持动画转换 反应-内在屏幕, (中文(简体) ), 反应-原生再激活, (中文(简体) ), 反应-内在导航 和莫达尔斯。 这个库支持Apple TV和Android TV!. !

[尖叫声] 下方标签 反应-导航/自下而上 财务报告和审定财务报表 粘性页眉组件 在Android没有支持。 更详细的信息,只是 点击这里来啊!

GitHub package.json version Unpacked size NPM Downloads

[注] 此软件包支持 仅限 新结构。 。 。 .

React Native Blur View on iOS React Native Blur View on Android

内容提要

安装

npm install @danielsaraldi/react-native-blur-view
# or
yarn add @danielsaraldi/react-native-blur-view
# or
pnpm add @danielsaraldi/react-native-blur-view
# or
bun add @danielsaraldi/react-native-blur-view

安装本地依赖( N)仅iOS:

cd ios && pod install && cd ..

使用量

import { useRef } from 'react';
import { ScrollView, StyleSheet, Text, View } from 'react-native';
import {
  BlurView,
  BlurTarget,
  VibrancyView,
} from '@danielsaraldi/react-native-blur-view';
// ...

export default function App() {
  const targetRef = useRef<View | null>(null);
  // ...

  return (
    <>
      <BlurView blurTarget={targetRef} style={styles.blurView}>
        <Text style={styles.text}>BlurView</Text>
      </BlurView>

      <VibrancyView style={styles.vibrancyView}>
        <Text style={styles.text}>VibrancyView</Text>
      </VibrancyView>

      <BlurTarget ref={targetRef} style={styles.blurTarget}>
        <ScrollView
          style={styles.scrollView}
          contentContainerStyle={styles.contentContainer}
          showsVerticalScrollIndicator={false}
        >
          {/* ... */}
        </ScrollView>
      </BlurTarget>
    </>
  );
}

export const styles = StyleSheet.create({
  blurView: {
    position: 'absolute',
    top: 0,

    width: '100%',
    height: 256,

    justifyContent: 'center',
    alignItems: 'center',
  },

  vibrancyView: {
    position: 'absolute',
    top: 256,

    width: '100%',
    height: 256,

    justifyContent: 'center',
    alignItems: 'center',
  },

  title: {
    fontSize: 24,
    fontWeight: 'bold',

    color: 'white',
  },

  main: {
    flex: 1,
  },

  content: {
    padding: 20,

    gap: 8,
  },
});

使用列表

您必须添加 BlurView 列表中的元素,后面的内容应当作为孩子加入 BlurTarget 组件。 检查使用示例 ScrollView 下图:

import { useRef } from 'react';
import { ImageBackground, ScrollView, Text, View } from 'react-native';
import { BlurView, BlurTarget } from '@danielsaraldi/react-native-blur-view';
// ...

export function MyScreen() {
  const targetRef = useRef<View | null>(null);
  // ...

  return (
    <View style={styles.container}>
      <BlurTarget ref={targetRef} style={styles.blurTarget}>
        <ImageBackground
          style={styles.background}
          source={BACKGROUND}
          resizeMode="cover"
        />
      </BlurTarget>

      <ScrollView
        style={styles.scrollView}
        contentContainerStyle={styles.contentContainer}
        showsVerticalScrollIndicator={false}
      >
        <BlurView blurTarget={targetRef} style={styles.blurView}>
          <Text style={styles.text}>BlurView 1</Text>
        </BlurView>

        <BlurView blurTarget={targetRef} style={styles.blurView}>
          <Text style={styles.text}>BlurView 2</Text>
        </BlurView>

        <BlurView blurTarget={targetRef} style={styles.blurView}>
          <Text style={styles.text}>BlurView 3</Text>
        </BlurView>

        {/* ... */}
      </ScrollView>
    </View>
  );
}

使用 Modal

您必须添加 BlurTarget 作为内容屏幕的父程序,因为它将是 目标 有点模糊 这个 BlurView 组件必须在内部使用 Modal 使模糊的效果正确工作.

import { useRef, useState } from 'react';
import { Modal, View } from 'react-native';
import { BlurTarget, BlurView } from '@danielsaraldi/react-native-blur-view';
// ...

export function MyScreen() {
  const [isOpenModal, setIsOpenModal] = useState<boolean>(false);
  const targetRef = useRef<View | null>(null);
  // ...

  return (
    <>
      <Modal
        transparent
        statusBarTranslucent
        navigationBarTranslucent
        hardwareAccelerated
        visible={isOpenModal}
        onRequestClose={() => setIsOpenModal(false)}
        style={styles.modal}
      >
        <BlurView blurTarget={targetRef} style={styles.blurView} />

        <View style={styles.modalContent}>{/* ... */}</View>
      </Modal>

      <BlurTarget ref={targetRef} style={styles.blurTarget}>
        {/* ... */}
      </BlurTarget>
    </>
  );
}

使用 ImageBackground

您必须添加 BlurTarget 作为父母一方 ImageBackground 因为这将是 目标 有点模糊 这个 BlurView 组件必须用作 兄长 联 合 国 BlurTarget 使模糊的效果正确工作.

import { useRef } from 'react';
import { ImageBackground, View } from 'react-native';
import { BlurTarget, BlurView } from '@danielsaraldi/react-native-blur-view';
// ...

export function MyScreen() {
  const targetRef = useRef<View | null>(null);
  // ...

  return (
    <>
      <View style={styles.blurViewWrapper}>
        <BlurView
          blurTarget={targetRef}
          style={styles.blurView}
          downscaleFactor={4}
        >
          {/** ... **/}
        </BlurView>
      </View>

      <BlurTarget ref={targetRef} style={styles.blurTarget}>
        <ImageBackground
          style={styles.background}
          source={{ uri: 'https://picsum.photos/seed/picsum/600/900' }}
          resizeMode="cover"
        />
      </BlurTarget>
    </>
  );
}

构成部分

BlurView

这个 BlurView 组件扩展 a 的相同属性 View 组件。 这个 blurTarget 道具为 所需经费 使Android模糊效果正确工作.

属性

财产说明默认平台
blurTarget页:1 BlurTarget 有待确定的组成部分 BlurView 在树上的组件.undefined机器人
type模糊类型 上线.light全体
radius模糊半径 0 - 说吧 100。 。 。 .20.0全体
downscaleFactor降级系数 0 - 说吧 100。 。 。 .6.0机器人
overlayColor在组件中添加覆盖颜色 .undefined全体
androidColor覆盖 type 属性颜色.undefined机器人
reducedTransparencyFallbackColor启用降低透明度时模糊效果的背景颜色 .whiteiOS系统

当值小于 0 或超过 100 备抵 radius 或者说 downscaleFactor 属性,该值被剪切.

BlurTarget

这个 BlurTarget 组件扩展 a 的相同属性 View 组件.

本构成部分可供 只有机器人它有用,因为我们使用 迪梅兹的3v图书馆 以应用模糊效应,因此其执行与iOS略有不同. 这个 BlurTarget 组件为常见 View (原始内容存档于2018-09-28). In iOS.

这个 BlurTarget 不得含有下列内容: BlurView 目标相同 BlurTarget编辑 BlurTarget 可能包含其他 BlurTargets 财务报告和审定财务报表 BlurViews 虽然.

属性

财产说明默认平台
ref页:1 BlurTarget 有待确定的组成部分 BlurView 在树上的组件.undefined机器人

VibrancyView

这个 VibrancyView 组件扩展 a 的相同属性 View 组件.

本构成部分可供 仅iOS它对儿童内容适用活力效应。 安卓号上 VibrancyView 组件为常见 View编辑 effectStyle 属性 没有支持 在电视上.

属性

财产说明默认平台
type模糊类型 上线.lightiOS系统
effectStyle效果样式 {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}给活力内容.labeliOS系统
radius模糊半径 0 - 说吧 100。 。 。 .20.0iOS系统
overlayColor在组件中添加覆盖颜色 .undefinediOS系统
reducedTransparencyFallbackColor启用降低透明度时的活性效应的背景颜色 .whiteiOS系统

当值小于 0 或超过 100 备抵 radius 属性 radius 被剪辑.

类型

这些都是可用的类型.

模糊类型

在iOS上,所有类型都得到支持,但在Android上,这些类型使用RGBA颜色来模拟.

财产说明平台
extra-light景区比地底景区要轻.全体
light观点领域与基本观点的大致光度相同.全体
dark景区比地底景更暗.全体
extra-dark景区甚至比地底景更暗. (中文(简体) )tvOS >= 10(中文(简体) )全体
regular一种适应用户界面样式的常规模糊样式。 ()iOS >= 10(中文(简体) )全体
prominent模糊的样式使内容更加突出,适应用户界面样式. ()iOS >= 10(中文(简体) )全体
chrome-material适应性模糊效应,产生系统铬的外观. (iOS >= 13(中文(简体) )全体
material适应性模糊效应,产生具有正常厚度的材料外观。 (iOS >= 13(中文(简体) )全体
thick-material一种可适应的模糊效应,它产生一种比正常更厚的材料的外观iOS >= 13(中文(简体) )全体
thin-material适应性模糊效应,产生薄材料外观. (iOS >= 13(中文(简体) )全体
ultra-thin-material一种可适应的模糊效应,产生出超薄材料的外观. (iOS >= 13(中文(简体) )全体
chrome-material-light产生系统染色体外观并总是轻而易举的模糊效应iOS >= 13(中文(简体) )全体
material-light模糊效应,产生出有正常厚度的材料外观,并总是轻而易举(iOS >= 13(中文(简体) )全体
thick-material-light一种模糊的影响,它造成一种材料的外观,它比正常的更厚,而且总是很轻iOS >= 13(中文(简体) )全体
thin-material-light模糊效应,产生出一薄材料的外观,并且总是轻而易举. (iOS >= 13(中文(简体) )全体
ultra-thin-material-light模糊效应,产生出一种超薄材料的外观,并且总是轻而易举地iOS >= 13(中文(简体) )全体
chrome-material-dark模糊效应产生系统铬的外观并总是阴暗. (CiOS >= 13(中文(简体) )全体
material-dark模糊效应,产生出具有正常厚度的材料外观,并始终为暗色. (iOS >= 13(中文(简体) )全体
thick-material-dark一种模糊的影响,它造成一种材料的外观,这种材料比正常的更厚并总是黑暗的iOS >= 13(中文(简体) )全体
thin-material-dark模糊效应,产生薄材料的外观,并总是阴暗. (iOS >= 13(中文(简体) )全体
ultra-thin-material-dark模糊效应,产生出超薄材料的外观,并总是阴暗的. (iOS >= 13(中文(简体) )全体

更多地了解模糊类型 这里。 。 。 .

效果样式

在iOS上,支持所有效果样式. 该财产可在 VibrancyView 组件,它是 仅iOS。 。 。 .

财产说明平台
label包含主内容的标签样式 。 ()iOS >= 13(中文(简体) )iOS系统
secondary-label包含次要内容的标签样式 。 ()iOS >= 13(中文(简体) )iOS系统
tertiary-label包含三级内容的标签样式 。 ()iOS >= 13(中文(简体) )iOS系统
quaternary-label包含四元内容的标签样式 。 ()iOS >= 13(中文(简体) )iOS系统
fill含有主要内容的大填充区域视图的样式。 ()iOS >= 13(中文(简体) )iOS系统
secondary-fill含有二级内容的大填充区域视图样式。 ()iOS >= 13(中文(简体) )iOS系统
tertiary-fill含有第三产业内容的大型填充区域视图样式。 ()iOS >= 13(中文(简体) )iOS系统
separator分隔行的样式 。 ()iOS >= 13(中文(简体) )iOS系统
  • 标签样式显示进步的不透明度从全白降到了近隐.
  • 填充样式显示半透明矩值在逐渐减少的不透明水平上.
  • 分隔器风格是专为薄而半透明的分隔线.

学习更多效果样式 这里。 。 。 .

迁移到 3.x

[尖叫声] 3.0.0版本在Android和iOS应用上引入了显著的API变化. 如果从 2.x 升级,请仔细阅读本节.

在3.0.0版本中 x-light 模糊 type 已更名为 extra-light 输入 BlurView 财务报告和审定财务报表 VibrancyView 组件 :

// ❌ Old API (v2.x) - Deprecated
<BlurView blurTarget={targetRef} type='x-light' style={styles.blurView}>
  {/** ... **/}
</BlurView>

<VibrancyView blurTarget={targetRef} type='x-light' style={styles.vibrancyView}>
  {/** ... **/}
</VibrancyView>

// ✅ New API (v3.0.0) - Current
<BlurView blurTarget={targetRef} type='extra-light' style={styles.blurView}>
  {/** ... **/}
</BlurView>

<VibrancyView blurTarget={targetRef} type='extra-light' style={styles.vibrancyView}>
  {/** ... **/}
</VibrancyView>

一个新的 type 模糊调用 extra-dark 已添加到 BlurView 财务报告和审定财务报表 VibrancyView 组件。 下面是一个小例子:

// ✅ New type (v3.0.0) - Current
<BlurView blurTarget={targetRef} type="extra-dark" style={styles.blurView}>
  {/** ... **/}
</BlurView>

为什么是这个变化?

这个版本完全专注于全电视设备支持. 主要变化如下:

  • 新支助:加入Android TV和Apple TV的全力支持.
  • 类型编号: BlurView 财务报告和审定财务报表 VibrancyView 构成部分类型经历了小的变化:
    • 重命名: 重命名为 x-light 改为 extra-light。 。 。 .
    • 新类型: 添加了一个新的 extra-dark 类型.
  • 运行时间: ump Node.js 版本来自 20.x 改为 22.x。 。 。 .

平台差异

机器人

在Android平台上,组件利用 模糊视图 库以硬件加速渲染提供本地模糊效果.

对于 regular, (中文(简体) ), prominent,而且材料类型模糊,覆盖的颜色不透明度由 radius / 100 以匹配iOS效果强度。 这不适用于当 androidColor 提供.

这个 androidColor 属性可以在您想要实现特定外观或将模糊效果与您的应用程序中的其他元素相匹配时有用。 这个 覆盖 页:1 type 属性.

下方标签 react-navigation/bottom-tabs 财务报告和审定财务报表 粘性页眉组件 没有 支持 ! 如果您想要自定义下标签或粘贴页眉组件, 请选择 @sbaiahmed1/react-native-blur。 。 。 .

仅基于 TextureView 被支持。 使用部件 SurfaceView blurView第三方库不支持.

iOS系统

在iOS上,默认支持所有类型. 然而,在Android上它们是RGBA颜色来模拟同样的模糊颜色.

这个 extra-dark 模糊类型在 iOS 上无法本地获取,所以它会回到 dark 模糊的类型.

对于 regular, (中文(简体) ), prominent类型模糊 radius 属性控制整个效果的强度(蓝、锡和饱和度)的百分比(radius / 100),因为这些类型不支持自定义模糊半径. A 类 radius 联 合 国 100 保持模糊型的原生强度,不能超越.

tvOS 视频

在 tvOS 上,模糊类型 extra-light, (中文(简体) ), light, (中文(简体) ), dark, (中文(简体) ), extra-dark, (中文(简体) ), regular,以及 prominent 被支持。 其他模糊类型被API接受,但倒回到 light tvOS 上的模糊类型,因为 UIBlurEffectStyle 数值没有.

这个 效果样式 没有 已支持.

博览

在博览会中,你需要转换为 自定义开发 或用途 预建。您也可以使用 React Intex.

类型脚本支持

完整类型脚本支持, 并有合适的类型定义 !

import {
  BlurType,
  EffectStyle,
  BlurViewProps,
  BlurTargetProps,
  VibrancyProps,
} from '@danielsaraldi/react-native-blur-view';

export const INITIAL_BLUR_TYPE: BlurType = 'light';
export const INITIAL_EFFECT_STYLE: EffectStyle = 'label';

export interface CustomBlurViewProps extends BlurViewProps {
  // ...
}

export interface CustomBlurTargetProps extends BlurTargetProps {
  // ...
}

export interface CustomVibrancyViewProps extends VibrancyProps {
  // ...
}

其他图书馆

  • ✅ expo-blur - 反应元件模糊了视野下的一切 这通常用于导航条、标签条和模式.
  • ✅ @sbaiahmed1/react-native-blur - 现代反应原生模糊视图组件,为iOS和Android平台提供原生模糊效果。 还添加了进步的模糊和液态玻璃.
  • 🛑 @react-native-community/blur - 用于UIVisual Effect View对iOS的模糊和活泼效应的组件,以及Android的BlurView.

捐款

见 贡献指南 学习如何为储存库和发展工作流程作出贡献.

许可证

麻省理工学院


制造的 创建- 反应- 本土- 图书馆 ❤️

版本与发布记录

@danielsaraldi/react-native-blur-view 共发布 57 个版本,首次发布于 2025/06/17;过去 12 个月发布了 29 个版本。

版本发布日期距今
3.2.0latest2026/10/2615 天前
3.1.12026/10/1823 天前
3.1.02026/10/1427 天前
3.0.52026/10/031 个月前
3.0.42026/10/031 个月前
3.0.32026/09/052 个月前

关于 @danielsaraldi/react-native-blur-view 的常见问题

@danielsaraldi/react-native-blur-view 是什么?

一个简单的模糊视图, 反应本地

如何安装 @danielsaraldi/react-native-blur-view?

在项目目录运行 npm install @danielsaraldi/react-native-blur-view,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(*)、react-native(*)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@danielsaraldi/react-native-blur-view 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@danielsaraldi/react-native-blur-view 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@danielsaraldi/react-native-blur-view 可以商用吗?

@danielsaraldi/react-native-blur-view 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@danielsaraldi/react-native-blur-view 的下载量有多少?

根据 npm 官方下载统计,@danielsaraldi/react-native-blur-view 在 2026/10/12 – 2026/11/10 这 30 天内被下载 56,783 次,日均约 1,893 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@danielsaraldi/react-native-blur-view 还在维护吗?

最新版本 3.2.0 发布于 2026/10/26(15 天前);至今共发布 57 个版本,其中过去 12 个月发布了 29 个;首次发布于 2025/06/17。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。