更新记录
1.0.0(2026-09-18)
nurzil-text 原生渐变文字
独立实现的 uni-app x 标准模式原生组件,面向 HBuilderX 5.24 蒸汽模式。参考 lime-gradient-text 的公开功能说明,未使用其收费源码,不依赖 lime-shared。
Android 使用 TextView + Shader,iOS 使用 UILabel + CAGradientLayer 遮罩,鸿蒙使用 ArkUI Text + 离屏渐变合成。完整字符串交给原生文字引擎排版,不逐字拆开;支持维吾尔语连写、自定义字体、多行和 RTL。
使用
<template>
<nurzil-text
class="title-gradient"
text="美丽的渐变文字"
type="linear"
:deg="90"
:colors="['#ff669d', '#ffc36b', '#73e6d2']"
:font-size="30"
direction="ltr"
text-align="center"
/>
</template>
<style>
.title-gradient {
width: 300px;
height: 72px;
}
</style>
支持 easycom;也可像演示页一样显式导入组件。插件不包含项目字体,font-path 指向使用方项目内的字体文件。
原生字体不会继承页面 .ug 或父级 CSS,必须通过 font-family / font-path 指定。建议同时传入字体文件路径,原生端会解析实际资源位置。仅支持项目代码包内的本地字体,不下载远程字体;不可用时回退字体。
属性
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| text | string | 必传 | 完整文字,支持换行 |
| type | string | linear | linear / radial / conic |
| deg | number | 90 | CSS 角度:0 向上,90 向右;径向渐变忽略角度 |
| colors | string[] | 粉紫双色 | 至少一个颜色,支持 #RRGGBB、#RRGGBBAA;单色自动转纯色填充 |
| locations | number[] | [] | 留空均匀分布;指定时与 colors 等长,0..1 严格递增 |
| font-size | number | 28 | 逻辑 px;使用属性而非 CSS font-size |
| font-family | string | 空 | 原生字体族,空值使用系统字体 |
| font-path | string | 空 | 项目内字体文件,如 /static/fonts/UKIJEkran.ttf |
| font-weight | string | normal | normal / bold;缺少粗体变体时平台合成或保留原字体 |
| text-align | string | left | left / center / right,物理方向不随 RTL 交换 |
| direction | string | auto | auto / ltr / rtl;维吾尔语建议显式 rtl |
| max-lines | number | 0 | 0 不限行;正整数限制行数,超出尾部省略 |
渐变以整个组件矩形为坐标范围。径向渐变以矩形中心为圆心,半对角线为半径;锥形渐变从顶部开始顺时针旋转。颜色八位格式统一使用 CSS 的末尾 alpha,不使用 Android 的 AARRGGBB 顺序。为减少多端差异,此版本不解析 CSS 渐变字符串、命名色或颜色位置对象,使用 colors + locations 配置。
组件默认宽度 100%、高度 64px。需要多行时必须增大组件高度;高度不足时内容会被裁剪。默认垂直居中,文字尺寸变化不会自动撑高 native-view。
事件和生命周期
load:初始化调用已提交,不表示首帧已绘制或字体加载已验证。error(message):参数校验或原生实例创建调用失败。无效更新保留之前的原生画面。- 属性变化更新同一个原生实例;卸载自动销毁,避免重复绑定。
- 不申请权限、不发起网络请求、不使用 WebView。
演示页
当前项目已注册 pages/gradient-demo/gradient-demo,包含三种渐变、自定义色标、UKIJEkran 维吾尔语、两行省略、切换配色和旋转角度。可在 HBuilderX 中将该页作为运行页面。未更改首页及业务页面的原有文字。
平台与验证
| 平台 | 实现基线 | 当前验证状态 |
|---|---|---|
| Android | API 21+;Kotlin TextView | HBuilderX 单插件原生编译通过;设备基座断连,未完成演示页真机视觉验证 |
| iOS | iOS 12+;Swift UILabel | Swift 语法解析通过;本机缺少完整 Xcode/iOS SDK,运行检查同时受未签名基座阻塞,未完成 UTS/iOS 编译 |
| 鸿蒙 | HarmonyOS 5.0 / API 12+;ArkTS Text | 原生代码和绑定层已提供;HBuilderX 未配置 DevEco Studio,未完成编译及真机验证 |
| Web / 小程序 | 非原生目标 | 仅纯色文本占位,不提供渐变和原生属性支持 |
独立 lsp lint 因 HBuilderX 返回 Failed to read platform settings 未能执行,不等同于代码通过静态检查。Android 验证命令为 cli compile app-android --project <项目路径> --uni_module nurzil-text。
鸿蒙 auto 为首个方向字母判断,复杂双向控制符及不同基方向的多段文本应显式指定 direction。三端字体度量、换行和粗体效果由系统引擎决定,不保证像素级完全一致。
新增原生插件后需要重新编译 App;仅刷新 JS 热更资源不能替代原生插件集成。iOS 需完整 Xcode、可用 SDK 和签名基座或模拟器;鸿蒙需配置 DevEco Studio 与可用 SDK。
回归
项目 tests/gradient-text.test.cjs 覆盖参数、色标、生命周期、动态更新和模板解析。执行 node tests/gradient-text.test.cjs。这是本地逻辑验证,不能替代三平台原生编译或字体视觉验证。
实现依据
- DCloud native-view 文档:“需要开发者监听 @init 事件,在此事件中创建平台原生 view 与 UniNativeViewElement 进行绑定”。
- 标准模式组件文档:“绑定原生 view 方法……仅支持调用一次”;“iOS 平台需要 Vue 组件主动释放 UTS 实例”。
- 原生混编文档:各平台目录可以放 Kotlin、Swift、ArkTS,UTS 入口负责调用原生实现。
平台兼容性
uni-app x(5.24)
| Chrome | Safari | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 | 鸿蒙插件版本 | 微信小程序 |
|---|---|---|---|---|---|---|---|---|
| × | × | 5.0 | 1.0.0 | 12 | 1.0.0 | 5.0 | 1.0.0 | × |
nurzil-text 原生渐变文字
独立实现的 uni-app x 标准模式原生组件,面向 HBuilderX 5.24 蒸汽模式。参考 lime-gradient-text 的公开功能说明,未使用其收费源码,不依赖 lime-shared。
Android 使用 TextView + Shader,iOS 使用 UILabel + CAGradientLayer 遮罩,鸿蒙使用 ArkUI Text + 离屏渐变合成。完整字符串交给原生文字引擎排版,不逐字拆开;支持维吾尔语连写、自定义字体、多行和 RTL。
使用
<template>
<nurzil-text
class="title-gradient"
text="美丽的渐变文字"
type="linear"
:deg="90"
:colors="['#ff669d', '#ffc36b', '#73e6d2']"
:font-size="30"
direction="ltr"
text-align="center"
/>
</template>
<style>
.title-gradient {
width: 300px;
height: 72px;
}
</style>
支持 easycom;也可像演示页一样显式导入组件。插件不包含项目字体,font-path 指向使用方项目内的字体文件。
原生字体不会继承页面 .ug 或父级 CSS,必须通过 font-family / font-path 指定。建议同时传入字体文件路径,原生端会解析实际资源位置。仅支持项目代码包内的本地字体,不下载远程字体;不可用时回退字体。
属性
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| text | string | 必传 | 完整文字,支持换行 |
| type | string | linear | linear / radial / conic |
| deg | number | 90 | CSS 角度:0 向上,90 向右;径向渐变忽略角度 |
| colors | string[] | 粉紫双色 | 至少一个颜色,支持 #RRGGBB、#RRGGBBAA;单色自动转纯色填充 |
| locations | number[] | [] | 留空均匀分布;指定时与 colors 等长,0..1 严格递增 |
| font-size | number | 28 | 逻辑 px;使用属性而非 CSS font-size |
| font-family | string | 空 | 原生字体族,空值使用系统字体 |
| font-path | string | 空 | 项目内字体文件,如 /static/fonts/UKIJEkran.ttf |
| font-weight | string | normal | normal / bold;缺少粗体变体时平台合成或保留原字体 |
| text-align | string | left | left / center / right,物理方向不随 RTL 交换 |
| direction | string | auto | auto / ltr / rtl;维吾尔语建议显式 rtl |
| max-lines | number | 0 | 0 不限行;正整数限制行数,超出尾部省略 |
渐变以整个组件矩形为坐标范围。径向渐变以矩形中心为圆心,半对角线为半径;锥形渐变从顶部开始顺时针旋转。颜色八位格式统一使用 CSS 的末尾 alpha,不使用 Android 的 AARRGGBB 顺序。为减少多端差异,此版本不解析 CSS 渐变字符串、命名色或颜色位置对象,使用 colors + locations 配置。
组件默认宽度 100%、高度 64px。需要多行时必须增大组件高度;高度不足时内容会被裁剪。默认垂直居中,文字尺寸变化不会自动撑高 native-view。
事件和生命周期
load:初始化调用已提交,不表示首帧已绘制或字体加载已验证。error(message):参数校验或原生实例创建调用失败。无效更新保留之前的原生画面。- 属性变化更新同一个原生实例;卸载自动销毁,避免重复绑定。
- 不申请权限、不发起网络请求、不使用 WebView。
演示页
当前项目已注册 pages/gradient-demo/gradient-demo,包含三种渐变、自定义色标、UKIJEkran 维吾尔语、两行省略、切换配色和旋转角度。可在 HBuilderX 中将该页作为运行页面。未更改首页及业务页面的原有文字。
平台与验证
| 平台 | 实现基线 | 当前验证状态 |
|---|---|---|
| Android | API 21+;Kotlin TextView | HBuilderX 单插件原生编译通过;设备基座断连,未完成演示页真机视觉验证 |
| iOS | iOS 12+;Swift UILabel | Swift 语法解析通过;本机缺少完整 Xcode/iOS SDK,运行检查同时受未签名基座阻塞,未完成 UTS/iOS 编译 |
| 鸿蒙 | HarmonyOS 5.0 / API 12+;ArkTS Text | 原生代码和绑定层已提供;HBuilderX 未配置 DevEco Studio,未完成编译及真机验证 |
| Web / 小程序 | 非原生目标 | 仅纯色文本占位,不提供渐变和原生属性支持 |
独立 lsp lint 因 HBuilderX 返回 Failed to read platform settings 未能执行,不等同于代码通过静态检查。Android 验证命令为 cli compile app-android --project <项目路径> --uni_module nurzil-text。
鸿蒙 auto 为首个方向字母判断,复杂双向控制符及不同基方向的多段文本应显式指定 direction。三端字体度量、换行和粗体效果由系统引擎决定,不保证像素级完全一致。
新增原生插件后需要重新编译 App;仅刷新 JS 热更资源不能替代原生插件集成。iOS 需完整 Xcode、可用 SDK 和签名基座或模拟器;鸿蒙需配置 DevEco Studio 与可用 SDK。
回归
项目 tests/gradient-text.test.cjs 覆盖参数、色标、生命周期、动态更新和模板解析。执行 node tests/gradient-text.test.cjs。这是本地逻辑验证,不能替代三平台原生编译或字体视觉验证。
实现依据
- DCloud native-view 文档:“需要开发者监听 @init 事件,在此事件中创建平台原生 view 与 UniNativeViewElement 进行绑定”。
- 标准模式组件文档:“绑定原生 view 方法……仅支持调用一次”;“iOS 平台需要 Vue 组件主动释放 UTS 实例”。
- 原生混编文档:各平台目录可以放 Kotlin、Swift、ArkTS,UTS 入口负责调用原生实现。

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 1
赞赏 0
下载 12617222
赞赏 1949
赞赏
京公网安备:11010802035340号