功能需求
在 SwiftUI 的开发中,我们往往需要借助底层 UIKit 的“上帝之手”来进一步实现额外的定制功能。比如,在可拖放(Dragable)SwiftUI 的实现中,会缺失拖放取消的回调方法让我们这些秃头码农们“欲哭无泪”
如上图所示,我们在拖放取消时将界面中的一切改变都恢复如初,目前单靠 SwiftUI 这是不可能完成的任务!那么我们是如何实现的呢?
在本篇博文中,您将学到以下内容
- 功能需求
- 9. SWIZZ 黑魔法祝我们一臂之力
- 10. 打通任督二脉:最终的实现!
- 总结
- 结束语
相信学完本课后,会圆小伙伴们 SWIZZ 底层 UIKit 让原本不可思议的操作在 SwiftUI 中“信手拈来”之梦。
无需等待,Let‘s go!!!😉
9. SWIZZ 黑魔法祝我们一臂之力
从之前博文的讨论可知,我们之所以无法完成所需的功能是因为 SwiftUI 对拖放操作没有提供已完成 Completion(或已取消)事件的回调。
我们希望所有之前已交换的 Item 在拖放取消时“回归本初”,没有已完成事件的反馈这是一个貌似不可能完成的任务。
不过,我们换个思路想一下:SwiftUI 要实现拖放功能必须创建 UIDragInteraction 对象,