“可刷新”是什么意思
大多数 iPhone 用户都知道下拉屏幕可以刷新许多应用中的内容,这就是经典的下拉刷新手势,这正是我们所说的“可刷新”功能。早期版本的 Splync 不支持此功能。刷新屏幕的唯一方法是关闭应用并重新打开。这并不太麻烦,因为自 Splync v1.3 以来应用一直让你保持登录状态,但这仍然不够理想。由于 Splync 致力于成为最简单的共享预算跟踪器,刷新屏幕应该毫不费力。这就是为什么我们在 v1.10 中引入了下拉刷新,使 Splync 完全可刷新。
Splync 刷新数据的两种方式(完全重载/视图更新)
在主屏幕上——你可以看到个人资料照片、好友列表和项目列表,下拉刷新会执行完全重载。它会重新检索所有与账户相关的数据,非常类似于注销并重新登录。因此,刷新可能需要大约一秒钟的时间显示加载消息。在项目屏幕上,你的费用列表显示出来,相同的下拉手势会触发较轻的视图更新。只有项目特定的数据会被刷新,例如类别变更和费用更新。无需等待整整一秒钟来查看是否有人添加了新费用。还请注意:Splync 不会自动从服务器后台获取项目数据。该应用仅在你进行更改、打开费用查看其详细信息或手动刷新项目页面时检查更新。
为什么不进行实时同步
一些用户可能希望当朋友添加新费用时,项目更新能立即出现。实时同步听起来很方便,但也有重要的权衡。持续的后台更新需要更多电量、更多移动数据,并且更复杂的服务器连接会让应用对每个人来说都变慢。Splync 的按需更新方式保持了轻量级和响应性,并防止在你查看预算时屏幕突然改变。还有安全方面的考虑。保持与服务器的持续连接会增加未授权访问的风险窗口,并需要在后台运行额外的身份验证逻辑。通过仅在你采取行动时进行刷新,Splync 最大程度地减少了不必要的网络活动,并使数据访问更加可控和可预测。
.refreshable 的代码背后
起初,我以为这个更新会很简单。在用于 iOS 开发的 Swift 语言中,你可以通过将 .refreshable 修饰符附加到 ScrollView 或 List 来启用下拉刷新。但是,它没有按我预想的方式工作。深入研究问题后,我找到了根本原因。我想要将下拉刷新添加到整个顶部屏幕,其中包括好友列表和项目列表。但在原始设计中,这两个组件也是可滚动的。因此,.refreshable 不知道它属于哪个可滚动区域,手势无法被一致地检测到。为了解决这个问题,我重新构建了好友列表和项目列表,使它们不再单独可滚动。这是安全的,因为当内容超出屏幕高度时,顶层视图本身会滚动。一旦我简化了结构并确保只有一个可滚动容器,.refreshable 最终表现得完全如预期。我还添加了一个典型的刷新按钮,以便用户只需轻点即可刷新。
拉动无效?再拉远一点
在大多数 iOS 应用中,下拉刷新不会在你一开始拖动时立即激活。SwiftUI 有一个内置的手势阈值:系统会等待,直到你下拉一定距离才会触发刷新。这可以防止当你从屏幕顶部开始滚动时的意外更新。Splync 遵循这一标准行为。你可能会注意到短暂的下拉无法刷新内容,但稍微长一点的下拉——足以显示刷新指示器——就会触发更新。这个设计让互动更具目标性。它避免了不必要的刷新,特别是在用户经常浏览长费用或项目列表的屏幕上。一旦你稍微“过度拉动”顶部边界并出现指示器,刷新将在你松手后立刻开始。虽然是个小细节,但它有助于提供更流畅、更可预测的体验。需要澄清的是:这不是要求拉更长时间或施加更大压力,关键是拉动的距离要足够长。
小特性,精心打造
下拉刷新看起来只是一个小互动,但其构建涉及设计选择、技术重组以及幕后令人惊讶的众多考虑。Splync v1.10 让刷新数据变得自然、刻意且可预测——这正是最简单的共享预算应用中应有的方式。我希望这个更新能为你带来更顺畅的体验,并让你了解每个细节背后的用心。感谢你使用 Splync。