托盘删除手势与引导体验修复:滚动冲突、画布消失动画、气泡边框

文章目录

SnipTrip 简介

SnipTrip 是一款精致的 iOS 贴纸拼贴应用,提供流畅、优雅的创作体验。界面融合了液态玻璃质感、Apple Intelligence 风格的光晕动画与细腻触感反馈,让贴纸编辑过程更具氛围感与沉浸感。

左:深色模式下的彩虹光晕流动效果 | 右:浅色模式下的柔和光晕呼吸效果


01 托盘上滑删除导致水平滚动失效

问题现象

托盘支持"上滑删除"后,横向滑动无法滚动贴纸列表。

原因是贴纸缩略图绑定的 DragGesture 会抢占横向滚动手势,ScrollView 无法收到拖动事件。

修复策略

使用 UIKit 的 UIPanGestureRecognizer 做垂直方向锁定,只在"明显竖直速度"时响应删除手势,同时允许与 ScrollView 同时识别:

swift 复制代码
final class Coordinator: NSObject, UIGestureRecognizerDelegate {
    func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
        guard let pan = gestureRecognizer as? UIPanGestureRecognizer else { return true }
        let velocity = pan.velocity(in: pan.view)
        return abs(velocity.y) > abs(velocity.x)
    }

    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer,
                           shouldRecognizeSimultaneouslyWith other: UIGestureRecognizer) -> Bool {
        true
    }
}

结果

竖直上滑删除保持可用,横向滚动恢复正常。


02 画布删除动画不生效

问题现象

托盘删除后,画布上的贴纸直接消失,没有渐隐、缩放或抛出动画。

根因分析

画布动画依赖 deletingStickerIDs,但集合是就地修改;
@Published 对 Set 的原地变更不会触发 SwiftUI 刷新,isDeleting 永远是 false

修复策略

对 Set 改为"新值赋值",确保发布更新:

swift 复制代码
var updatedDeleting = deletingStickerIDs
updatedDeleting.insert(id)
deletingStickerIDs = updatedDeleting

同时在画布视图中接收 deletingStickerIDs,驱动删除动画状态。

结果

画布贴纸出现预期的缩放、上移与淡出动画。


03 引导气泡出现矩形边框

问题现象

首次引导气泡外侧出现矩形轮廓,破坏了胶囊气泡的统一视觉。

根因分析

overlay(bubbleGradient) 会在矩形范围 绘制渐变,导致边缘出现方形边框。

即使背景是 Capsule,overlay 仍按矩形框渲染。

修复策略

将渐变限定在 Capsule 内部:

swift 复制代码
Capsule(style: .continuous)
    .fill(.ultraThinMaterial)
    .overlay(
        Capsule(style: .continuous)
            .fill(bubbleGradient)
    )

结果

气泡边缘与背景一致,无矩形边框残留。


小结

本轮修复集中于"托盘删除交互"的稳定性与引导体验细节:

  • 手势冲突修复,滚动与删除互不干扰
  • 画布删除动画恢复,交互闭环完整
  • 引导气泡视觉统一,风格更贴合 SnipTrip 的玻璃质感与光晕主题

SnipTrip 正持续优化交互与视觉细节,让贴纸创作更顺滑、更有质感。

相关推荐
游戏开发爱好者815 小时前
iOS 推送怎么配置,APNs 推送证书、设备库与群发
android·ios·小程序·https·uni-app·iphone·webview
AI服务老曹1 天前
边云协同视频分析性能优化指南:多站点部署下的资源瓶颈突破与调优实战
性能优化·音视频
Anhty2 天前
2026 实测 4 款 AI 变声器|QQ 聊天伪装声线,告别僵硬假声
人工智能·功能测试·ios·智能手机·安卓
A_cainiao_A2 天前
【ggml系列】【第五篇】ggml_compute_forward_mul_mat 矩阵乘法算子源码与性能优化深度解析
线性代数·性能优化·矩阵
ai产品老杨2 天前
边云协同视频分析性能优化指南:多站点部署下的参数配置与排查清单(边缘推理+云端管理)
性能优化·音视频
苏打水com2 天前
《llama.cpp性能优化实战:从显存、KV Cache到Token/s》
性能优化·llama
唔662 天前
flutter web iOS 在浏览器加载中文慢的问题
前端·flutter·ios
该用户可能存在2 天前
【Win11优化】StartAllBack实战:解决任务栏合并、右键折叠等痛点
windows·性能优化·win11·windows 11·startallback·任务栏·开始菜单
ZacJi2 天前
我为 DeepSeek Harness 写了一个 dsh-apple-mode 插件
ios·deepseek·vibecoding
灯澜忆梦2 天前
【MySQL12】进阶篇 | SQL优化
数据库·sql·mysql·性能优化