如何用快捷指令制作「动态进度条」

02/05 17:30

快捷指令通知可以添加 GIF 图片视频作为附件,辅之以一些简单的计算,就能实现有趣的「动态进度条」。


前言

快捷指令通知可以添加 GIF 图片视频作为附件,是本文思路实现的基础。

本文分为三部分,第一部分介绍动态进度条快捷指令制作(以年计时指令为例),第二部分介绍使用快捷指令制作动态进度条所需图片,第三部分整合进阶多个动态进度条。

文中提及所有快捷指令链接在文末提供。

动态进度条指令

使用词典

颜色模式作为词典的键,跟随设备的语言(中文是浅色模式和深色模式),将图片的 base64 编码保存到词典里,键设置为数字,以便后续的提取。

这里以年计时为例,首先获取年初到今天的天数以及今年的天数,因为每年的天数不是一定,所以使用指令来计算,不直接使用 365 天。

点开特殊变量当前日期,获取日期间隔 yyyy0101(当年的 1 月 1)到 yyyyMMdd(当天的日期),yyyy0101 到 yyyy1231(当年的 12 月 31 日),使用「计算表达式」获取所需数据的百分比,四舍五入去掉小数。

然后考虑数据如何转化为 emoji 的数量,百位数字是满月🌕的数量,个位数字是残月🌘的占比。除 10 获取百位数字(防止四舍五入进位,数字向下取整),模 10 获取个位数字。

除去第一张🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑的图像,每隔四张出现全满月🌕,所以将满月数量转化为图像的张数,「计算表达式」为🌕*4+1。两个全满月中间隔三种残月🌘🌗🌖,残月的张数为「计算表达式」🌘/3。

取整的模式,看自己的喜好,这里通过一个指令来展示「标准」,「始终向上取整」,「始终向下取整」三种模式。0 表示🌑,1 表示🌘,2 表示🌗,3 表示🌖,4 表示🌕,不同模式区别在于提前或推迟到达满月,提前或推迟进位残月。例如,数据为 24 时,个位数是 4,「标准」和「始终向上取整」模式为 2,图像为🌕🌕🌗🌑🌑🌑🌑🌑🌑🌑;「始终向下取整」模式为 1,图像为🌕🌕🌘🌑🌑🌑🌑🌑🌑🌑。当数据为 59 时,个位是 9,「标准」和「始终向下取整」模式为 3,图像为🌕🌕🌕🌕🌕🌖🌑🌑🌑🌑; 「始终向上取整」模式为 4,图像为🌕🌕🌕🌕🌕🌕🌑🌑🌑🌑。

将得到的满月张数加上残月张数,重复从词典中取值,重复的次数就是图像的张数,图像的张数就是词典的键,将词典值解码,制作 GIF。

设定好 GIF 的播放速度,将 GIF 作为通知的附件。

使用相册

将 41 张图像按顺序保存到相册,这样省去保存编码到词典的麻烦。

以 🌑 → 🌕 的顺序查找相册

*如果相册打开了 iCloud 同步并且没有选择将原图下载在设备中,指令运行时会增加 iCloud 下载照片的时间。

准备进度条帧图片

添加 emoji 到备忘录

原理是进度条可以看作三部分,满月🌕、残月🌘、无月🌑的组合。满月的数量和无月的数量相加为 9,中间的残月分为🌑🌘🌗🌖🌕五种情况。

设定两个手动变量分别储存满月和无月。满月🌕+无月🌑 = 9,取值有 10 种情况,所以重复 10 次,避免每一种取值都同时存储在变量里,将「设定变量」放在「重复」之中,每次重复时将变量赋空。

快捷指令的重复索引是从 1 开始,所以简单计算让索引对应上月亮的数量,将月亮按照数量「重复」的追加到变量里。

多个内容添加到同一变量时会组成有序列表,变量里的有序列表是分行存储,所以执行一个按行「拆分文本」再使用空白「合并文本」。这样就得到相应数量的横向排列的满月🌕和无月🌑。

列出中间残月所有情况的「列表」,对列表执行「重复每一项」操作,使用「文本」将残月🌘拼接到满月🌕和无月🌑的中间。

得到全部进度条时会存在一个问题。例如,🌕🌕🌕🌕🌕🌕🌑🌑🌑🌑进度条,🌕🌕🌕🌕🌕🌕+🌑+🌑🌑🌑或者🌕🌕🌕🌕🌕+🌕+🌑🌑🌑🌑都会生成。所以当满月和无月临界的时候会出现重复。

下面执行一个去重操作。去重操作的原理是多个内容可以添加到同一变量组成有序列表,每次添加前执行一个内容是否包含在变量里的判断。

对前面创建的 50 个进度条进行「重复每一项」操作,每次判断变量里是否包含重复项目,如果重复则不执行任何操作,如果不重复就「添加到变量」里,最后得到没有重复的进度条。

重复去重变量的每一项并添加到备忘录,建议单独保存在一个备忘录文件夹里,方便后续的查找。

备忘录截图

先查找备忘录,重复打开每一个备忘录并截屏,将截屏保存到相册里。

会员专属文章,欢迎加入少数派会员。
优质内容
权益周边
会员社群
power+
评论区
全部评论0
成为少数派会员方可评论,立即加入 。若已是少数派会员,点击登录
还没有评论,来发表第一个评论吧
全部评论
还没有评论,来发表第一个评论吧
成为少数派会员方可评论,立即加入 。若已是少数派会员,点击登录
会员新功能
内容侧边栏
点击这里拉开侧边栏,即可查看会员内容列表,快速切换内容。