好久没写过博客了,生怕自己的文字能力下降,于是决定每周写写开发日记。
不仅仅希望日后回顾时能够看到自己的成长道路,同时也借此机会验证自己的一些想法。
今天是第一篇,就从 瓦尔登 2.5.0 版本开始吧 🎉

本周工作

主要是在做 瓦尔登 四象限功能相关的,同时,为了接下来上线的宣传工作,特意粗浅的学了一下插画设计,但最终没有用上,最后还是用 Figma 去制作了。

为什么要重新设计四象限功能呢?

其实在 瓦尔登 最初版的时候,四象限 是一个主打的功能,但后面重构的时候,我觉得这个功能并不是很好,因为它只有样子,而没有内核,说白了就是一个虚有其表的功能罢了。因此在 UI2.0 的时候,四象限功能暂时移除了,时间赶是另一个原因。

不出我的预料,在四象限功能移除之后,用户的反应非常大,隔着屏幕我都能够感受到用户生气的气息。我只能一边道歉一边安慰 Ta 们,这个功能一定会回来的,请给我一点时间。

那么,我理想中的四象限应该是怎样的呢?

我认为,四象限功能不仅仅是简单的把任务简单地分配到各个象限中,我不得不承认,在我使用第一版的时候,四象限的功能我认为是非常鸡肋的,就是凭主观感觉感觉简单的设定一下任务的象限,然后完事,而四象限真正的核心恰恰是优先级评估。

因此,我必须将优先级评估模块做好,这个四象限才不是一个残次品。

于是,一个简单的评估模块就成型了。

只需要从待办事项列表中拖拽待办到指定的象限,即可安排优先级,同时,对应的象限待办任务的数量也会更新,这样做的好处在于,用户可以实时感知到每个象限的任务情况,这样分配的时候会更加合理。

当然,目前这个评估模块还是比较简单,但基本的框架已经搭建好,接下来逐步完善便是了。

本次开发遇到的难点

这次做四象限功能的时候,遇到了两个比较棘手的问题

SwiftUI 拖拽

不得不说,SwiftUI 大大提高了我的开发效率,但由于是个新技术,因此小问题也有不少。这次在实现拖拽功能的时候,有一个需求是,当用户拖拽任务的时候,任务当前的象限会显示该区域禁止放下的提示,因为本来该任务就属于该象限,再拖到这里没有意义。然而,拖拽的触发事件我是可以获取的,但是拖拽取消的事件,SwiftUI 并没有提供,而经过一番探索,也没有找到很好的解决方案,因此最后妥协了,没有把这个特性增加上去。

重复任务勾选问题

由于本次更新的四象限功能并没有提供日期筛选器,因此是将所有的待办事项列出来分配到对应的象限中取得。

对于非重复任务,处理比较简单,打勾直接就可以了。

但是对于重复性任务,就不太好处理,主要的问题在于,每次打勾,都是完成不同的日期,然后需要计算这个任务的下一个日期是什么时候。

为了更好的说明,我这里举一个列子,交房租。

小明每个月 1号 要交房租,于是他设置了一个重复任务,这个任务每个月 1号 会定期提醒。

这个任务出现在四象限页面的时候,会显示下一次交房租的日期 A(3月1日),当打勾的时候,交房租这个任务在日期 A 会记录已完成,然后会重新计算下一次交房租的日期 B(4月1日),以此类推。

这是一个简单的例子,非常好理解,来一个复杂的。

小王每周一、周三、周五下午 5点 都要进行羽毛球运动,在瓦尔登设置的时候,就会设置一个每周一、三、五重复的任务,并且在下午 5 点进行提醒。

如果今天是周三(2月22日),那么今天的运动完成之后,下一次任务日期将是周五(2月24日),周五运动完成以后,下一次任务是周一(2月27日),然后是周三(3月1日),以此类推

日期计算把我给绕晕了,最后还是采取最简单的办法,一个日期一个日期算,直到找到符合的日期为止。

其它想说的

瓦尔登 不知不觉也上线一年多了,经历过上线三天就获得编辑推荐的高光,也经历过每天几个下载的低谷。自己也几度陷入自我怀疑,是不是自己在哪里没做好,是不是自己做的产品不如别人。

或许,起伏才是人生的常态吧,想通了这点就好。

感谢阅读。

如果你想支持我,欢迎前往 App Store 搜索 瓦尔登 下载

Categorized in: