更新记录

1.0.0(2026-09-18) 下载此版本

1.0 发布


平台兼容性

uni-app x(5.25)

Chrome Safari Android iOS iOS插件版本 鸿蒙 微信小程序
× × × 26 1.0.0 × ×

其他

多语言 暗黑模式 宽屏模式
×

uni-glass-modal

基于 uni-app x glass-effect-view 实现的 iOS 液态玻璃弹框示例,提供普通提示、文本输入、明暗主题适配和接近 uni.showModal 的回调结果。

仅适用于 App iOS,系统版本需为 iOS 26 或更高。iOS 26 以下降级为系统毛玻璃效果。本示例使用 uni-app x Vapor 模式。

功能

  • 使用原生 glass-effect-view 呈现液态玻璃效果
  • 支持有标题、无标题、单按钮和双按钮布局
  • 支持 editable 文本输入及键盘避让
  • 支持自定义按钮文案和颜色
  • 跟随应用主题及系统明暗主题
  • 默认按钮文案适配简体中文、繁体中文、英语、西班牙语和法语
  • 提供 cancelconfirmcomplete 事件

运行示例

  1. 使用 5.25+ HBuilderX 导入示例项目。
  2. 选择 iOS 26 或更高版本的真机或模拟器。
  3. 运行到 App iOS。

首页包含普通弹框、无标题、长标题、自定义按钮、可编辑内容等示例。

接入组件

将插件目录放入 uni-app x 项目的 uni_modules 目录:

uni_modules/uni-glass-modal
└── components
    └── uni-glass-modal
        ├── uni-glass-modal.uvue
        ├── types.uts
        └── useTheme.uts

组件通过 visible 受控显示。调用方需要在 complete 事件中将 visible 设置为 false

<template>
    <button @click="openModal">显示弹框</button>

    <uni-glass-modal
        :visible="modalVisible"
        title="提示"
        content="是否继续执行该操作?"
        :show-cancel="true"
        @cancel="onCancel"
        @confirm="onConfirm"
        @complete="onComplete"
    />
</template>

<script setup>
    import type { GlassModalResult } from '@/uni_modules/uni-glass-modal/components/uni-glass-modal/types'

    const modalVisible = ref(false)

    function openModal() {
        modalVisible.value = true
    }

    function onCancel(result : GlassModalResult) {
        console.log('cancel', result)
    }

    function onConfirm(result : GlassModalResult) {
        console.log('confirm', result)
    }

    function onComplete(result : GlassModalResult) {
        console.log('complete', result)
        modalVisible.value = false
    }
</script>

可编辑弹框

editabletrue 时,content 是输入框的初始值;用户点击确认按钮后,可以从结果的 content 字段取得最终输入内容。

<uni-glass-modal
    :visible="modalVisible"
    title="添加备注"
    content=""
    :editable="true"
    placeholder-text="请输入备注"
    @confirm="onConfirm"
    @complete="onComplete"
/>

Props

属性 类型 默认值 说明
visible boolean false 是否显示弹框
title string \| null '' 标题;空值时不显示标题区域
content string \| null '' 普通模式下的正文,编辑模式下的输入初始值
showCancel boolean \| null true 是否显示取消按钮
cancelText string \| null null 取消按钮文案;null 时使用本地化默认文案
cancelColor string.ColorString \| null null 取消按钮颜色;null 时使用当前主题默认颜色
confirmText string \| null null 确认按钮文案;null 时使用本地化默认文案
confirmColor string.ColorString \| null null 确认按钮颜色;null 时使用当前主题默认颜色
editable boolean \| null false 是否显示文本输入框
placeholderText string \| null '' 输入框占位文案,仅编辑模式有效

Events

事件 参数 触发时机
cancel GlassModalResult 用户点击取消按钮
confirm GlassModalResult 用户点击确认按钮
complete GlassModalResult cancelconfirm 执行后

事件触发顺序为:

cancel 或 confirm -> complete

GlassModalResult

字段 类型 说明
cancel boolean 用户是否点击了取消按钮
confirm boolean 用户是否点击了确认按钮
content string \| null 仅在编辑模式下确认时返回输入内容,其他情况为 null

语言适配

cancelTextconfirmTextnull 时,组件会在每次打开前读取 uni.getAppBaseInfo().appLanguage,并选择对应的默认按钮文案。

应用语言 取消 确认
zh-Hans 取消 确定
zh-Hant 取消 確定
en Cancel OK
es Cancelar Confirmar
fr Annuler Confirmer

其他语言会回退到简体中文。修改系统中的应用语言后,重新打开弹框即可验证默认按钮文案。

主题适配

组件读取 appThemeosTheme

  • appThemelightdark 时使用指定主题。
  • appThemeauto 时跟随系统主题。
  • 运行期间主题变化会同步更新面板、正文、输入框、分割线和按钮颜色。

注意事项

  • 组件不会在点击遮罩时关闭。
  • visible 是受控属性,组件不会直接修改调用方状态;调用方应在结果事件或 complete 中隐藏弹框。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

液态玻璃弹框(以下简称软件)源码使用许可协议

2022年10月

本许可协议,是数字天堂(北京)网络技术有限公司(以下简称DCloud)对其所拥有著作权的“软件”,提供的使用许可协议。

您对“软件”的复制、使用、修改及分发受本许可协议的条款的约束,如您不接受本协议,则不能使用、复制、修改本软件。

授权许可范围

a) 授予您永久性的、全球性的、免费的、非独占的、不可撤销的本软件的源码使用许可,您可以使用这些源码制作自己的应用。

b) 您只能在DCloud产品体系内使用本软件及其源码。您不能将源码修改后运行在DCloud产品体系之外的环境,比如客户端脱离uni-app。

c) DCloud未向您授权商标使用许可。您在根据本软件源码制作自己的应用时,需以自己的名义发布软件,而不是以DCloud名义发布。

d) 本协议不构成代理关系。

DCloud的责任限制 “软件”在提供时不带任何明示或默示的担保。在任何情况下,DCloud不对任何人因使用“软件”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。

您的责任限制

a) 您需要在授权许可范围内使用软件。

b) 您在分发自己的应用时,不得侵犯DCloud商标和名誉权利。

c) 您不得进行破解、反编译、套壳等侵害DCloud知识产权的行为。您不得利用DCloud系统漏洞谋利或侵害DCloud利益,如您发现DCloud系统漏洞应第一时间通知DCloud。您不得进行攻击DCloud的服务器、网络等妨碍DCloud运营的行为。未经书面许可,您不得利用DCloud的产品进行与DCloud争夺开发者的行为。

d) 如您违反本许可协议,需承担因此给DCloud造成的损失。

本协议签订地点为中华人民共和国北京市海淀区。

根据发展,DCloud可能会对本协议进行修改。修改时,DCloud会在产品或者网页中显著的位置发布相关信息以便及时通知到用户。如果您选择继续使用本框架,即表示您同意接受这些修改。

条款结束

暂无用户评论。