Skip to content

SHUAXINDIARY/scriptable-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

Scriptable 天数计时组件

一个精美的 iOS 主屏幕小组件,用于显示从指定日期开始计算的天数,支持自定义标题和从图片提取颜色生成柔和融合渐变背景。

✨ 功能特性

  • 📅 日期计时:选择起始日期,自动计算并显示天数
  • 🎨 智能配色:从截图提取颜色,生成符合图片色系的渐变背景
  • 🌈 柔和融合渐变背景:多层线性渐变+柔光球叠加,无网格线,颜色自然融合
  • ✏️ 自定义标题:支持自定义标题文案,默认显示"计时第"
  • 📱 多尺寸支持:完美适配小、中、大三种组件尺寸
  • 💾 数据持久化:所有设置自动保存,组件刷新时自动读取

📋 使用要求

  • iOS 设备
  • Scriptable App(免费)
  • iOS 14+(支持小组件功能)

🚀 安装步骤

  1. 在 App Store 下载并安装 Scriptable
  2. 打开 Scriptable App
  3. 点击右上角 + 创建新脚本
  4. index.js 中的代码复制粘贴到脚本中
  5. 点击右上角 ▶️ 运行脚本进行初始设置

⚙️ 初始设置

首次运行脚本时,会依次提示你进行以下设置:

1. 设置标题

  • 输入自定义标题(如"计时第")
  • 或点击"使用默认"使用默认标题"计时第"
  • 留空也会使用默认标题

2. 选择日期

  • 选择起始日期(如纪念日、开始日期等)
  • 组件会自动计算从该日期到今天的天数

3. 选择背景颜色

  • 从相册选择:选择一张图片,脚本会提取图片中的主要颜色生成柔和融合渐变背景
  • 使用默认配色:使用预设的随机配色方案

📱 添加到桌面

  1. 在 Scriptable App 中完成初始设置
  2. 长按主屏幕进入编辑模式
  3. 点击左上角 + 添加小组件
  4. 搜索并选择 Scriptable
  5. 选择你想要的组件尺寸(小/中/大)
  6. 点击"添加小组件"
  7. 点击组件,选择你创建的脚本

🎨 组件尺寸说明

小组件 (Small)

  • 尺寸:155×155 点
  • 适合:简洁显示天数

中组件 (Medium)

  • 尺寸:329×155 点
  • 适合:横向展示,信息完整

大组件 (Large)

  • 尺寸:329×345 点
  • 适合:大字体显示,视觉效果突出

🔧 修改与刷新

  • 修改标题 / 日期 / 背景颜色:打开 Scriptable App 运行脚本,按提示重新设置(数据会自动保存到本地文件)
  • 刷新组件:iOS 小组件存在系统级刷新频率限制。运行脚本后会尝试更新已添加的组件,如仍未刷新,可长按桌面组件点“编辑小组件”或稍后等待系统自动刷新。

📂 数据存储

所有设置保存在 Scriptable 的本地文档目录:

  • widget-title.txt - 自定义标题
  • widget-start-date.txt - 起始日期
  • widget-colors.json - 背景颜色配置

🎯 技术特性

  • 真实颜色提取:使用 WebView + Canvas API 从图片中提取真实像素颜色
  • 颜色增强:自动调整颜色饱和度和亮度,确保背景效果鲜明但不刺眼
  • 柔和融合渐变:多层线性渐变+大半径柔光球叠加,干净无网格纹理
  • 高分辨率渲染:使用 3x 分辨率渲染背景,确保 Retina 屏幕清晰显示
  • 自适应布局:根据组件尺寸自动调整字体大小和间距
  • 智能文字缩放:文字支持自动缩放,确保在不同尺寸下完整显示

🛠 实现细节(随机背景色原理)

  • 颜色来源:若用户选图,则用 WebView+Canvas 读取实际像素点;否则从内置 DEFAULT_PALETTES 随机选一组颜色。
  • 颜色过滤与增强:提取后去重、过滤相近色;对饱和度、亮度做轻微提升,保证可视效果。
  • 渐变生成:在 WebView 中以 3x 分辨率绘制,多层随机方向线性渐变叠加,再叠加大半径柔光球,最后覆上一层极轻微白色蒙层,得到无网格的柔和融合背景。
  • 持久化与刷新:选定的颜色会写入 widget-colors.json,下次组件模式直接读取;每次运行都会重新生成背景图,保证刷新。

📝 自定义说明

修改默认标题

在代码第 6 行修改 DEFAULT_TITLE 常量:

const DEFAULT_TITLE = "计时第"

修改默认配色方案

在代码第 352-358 行修改 DEFAULT_PALETTES 数组:

const DEFAULT_PALETTES = [
    ["#667eea", "#764ba2", "#f093fb"],
    // 添加更多配色方案...
]

🐛 常见问题

Q: 组件显示空白?
A: 确保已在 Scriptable App 中完成初始设置,包括标题、日期和背景颜色。

Q: 背景颜色不清晰?
A: 选择颜色丰富、对比度较高的图片,效果会更好。

Q: 如何重置所有设置?
A: 在 Scriptable App 中删除脚本,或手动删除保存的数据文件后重新运行。

Q: 组件不自动更新?
A: iOS 小组件有刷新限制,可以长按组件选择"编辑小组件"来手动刷新。

📄 许可证

本项目仅供个人学习使用。

🙏 致谢

  • 感谢 Scriptable 提供强大的自动化平台
  • 背景生成算法参考了 Mesh Gradient 实现

享受你的个性化计时组件! ⏰✨

About

scriptable - ios组件app库

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published