跳到主要内容

19 篇博文 含有标签「SwiftUI」

查看所有标签

上一章节中, 我们使用SwiftUI的手势动画,实现了一个类似Tinder的卡片滑动UI。

在本篇教程中,我们将继续探索SwiftUI中的动画与手势, 并使用 LongPressGestureDragGesture 来实现一个类似Apple Wallet的卡片堆叠、拖拽重排以及视图过渡效果。

通过学习本示例,你将掌握以下内容:

  • 如何结合 StateGestureStateTapGestureLongPressGestureDragGesture 实现交互控制;
  • 如何利用 transitionanimation 修饰器,实现卡片的进场动画以及点击卡片后显示交易历史的动画过渡;
  • 如何拖拽并重排卡片,同时更新数据源并触发SwiftUI的自动动画刷新。

若你还未使用过苹果自带的Wallet App,不妨先打开Wallet查看其交互效果,了解本章节要实现的最终动画效果。

鱼雪

上一章节中, 我们介绍了SwiftUI中的手势识别器,并使用 LongPressGestureDragGesture 实现了简单的手势交互。

本章节中,我们将继续探索SwiftUI中的动画与手势, 并使用 LongPressGestureDragGesture 来实现一个Tinder风格的卡片滑动UI。

在移动应用中,左右滑动卡片已成为一种流行且直观的交互形式。 Tinder最早将这种卡片滑动模式引入大众视野,用户可以向右滑表示喜爱(Like), 向左滑表示不喜欢(Dislike)。

在本篇教程中,我们将通过SwiftUI来实现一个类似Tinder的滑动卡片UI, 重点聚焦手势与动画的使用,而非构建完整的App逻辑。

通过学习本示例,你将掌握以下内容:

  • 如何使用SwiftUI的手势动画来实现卡片的拖拽与滑动
  • 如何在拖拽距离超过一定阈值时,实现卡片“抛出”效果,并切换至下一张卡片;
  • 如何在卡片上显示“喜欢”或“不喜欢”等提示icon
  • 如何使用ZStackForEach以及多种SwiftUI修饰器完善Tinder风格的交互体验。
鱼雪

上一章节 介绍了 SwiftUI 中如何为列表添加左滑删除、长按触发上下文菜单和点击弹出 Action Sheet 等互动功能。 本章将进一步扩展这个功能,深入探讨如何让用户与列表产生更多交互。

本章将进一步探讨 SwiftUI 提供的多种内置手势,以及如何将这些手势与视图组合使用。 我们会先深入了解几种常见的内置手势:TapGestureLongPressGestureDragGesture 等, 最后还会展示如何构建一个通用的拖拽视图组件,让你能够方便地将“拖拽”功能应用于任意 View。

鱼雪

上一章节 介绍了 SwiftUI 和 Combine 的结合使用, 本章将进一步扩展这个功能,深入探讨如何让用户与列表产生更多交互。

今天,我们将学习如何在 SwiftUI 中为列表添加左滑删除、长按触发上下文菜单和点击弹出 Action Sheet 等互动功能。

具体来说,您将学到:

  • 左滑删除(Swipe-to-delete)
  • 点击某一行弹出 Action Sheet
  • 长按某一行呼出 Context Menu

其中,左滑删除和 Action Sheet 都是 iOS 多年来所熟悉的界面元素, 而从 iOS 13 开始,Apple 引入了类似 3D Touch “peek & pop”的 Context Menu 功能, 使得用户可以通过长按或 3D Touch(设备支持的情况下)来触发一个弹出菜单。 作为开发者,我们需要配置在这个菜单中出现的操作项。

鱼雪

上一章节我们 介绍了如何通过 Combine@EnvironmentObject 来实现数据共享, 使我们的设置与主列表能够联动更新。

本节我们将继续深入探讨如何在 SwiftUI 中使用 Combine 框架来实时验证用户注册表单, 并基于 MVVM 架构进行代码的组织和管理。

SwiftUI 与 Combine 的出现,彻底改变了我们开发 iOS 应用的方式。 通过它们,我们可以以更加声明式、模块化的方式来编写代码,告别复杂的代理回调与冗长的闭包逻辑。 在本文中,我们将深入探讨如何在 SwiftUI 中使用 Combine 框架来实时验证用户注册表单,并 基于 MVVM 架构进行代码的组织和管理。

在这篇博客中,你将学习:

  1. 如何使用 SwiftUI 搭建用户注册表单的基础布局
  2. 如何使用 Combine 的发布者(Publisher)和订阅者(Subscriber)模型进行表单实时验证
  3. 如何使用 MVVM(Model-View-ViewModel)设计模式组织应用程序的代码
  4. 如何让 SwiftUI 视图与 ViewModel 轻松交互,从而提升应用的可维护性和可扩展性
鱼雪

上一章节中, 我们已经使用 SwiftUI 的 Form 组件实现了一个设置界面(Settings), 并为其添加了排序、筛选等多种选项。 然而,当用户在设置界面选择了不同的偏好后,主列表并不会根据用户的设置进行动态更新。

本篇文章将继续扩展我们的应用,通过 Combine@EnvironmentObject 来实现数据共享, 使我们的设置与主列表能够联动更新。

在这篇文章中,我们将讨论以下几个重点:

  1. 如何使用 enum 来重构并简化代码
  2. 如何借助 UserDefaults 永久保存用户的偏好设置
  3. 如何使用 Combine@EnvironmentObject 在视图之间共享数据、并实现自动刷新
鱼雪

上一章节中,我们已经学习了如何使用 SheetFullScreenCover 来实现模态视图。

本章将探讨另一种常见的交互方式——表单(Form)。

在移动应用开发中,表单是最常见的交互方式之一。 无论是日常在 iPhone 上创建日历事件,还是在购物类应用中填写收货与支付信息,都离不开表单。 对于开发者而言,如何快速而优雅地构建一个表单界面,是一项非常重要的技能。

在 SwiftUI 框架中,我们可以使用内置的 Form 组件来轻松搭建表单界面, 并结合 PickerToggleStepper 等常用控件,收集并管理用户输入。 本文将为你详细讲解如何使用这些组件来构建一个设置(Settings)页面, 并在其中实现排序偏好、筛选偏好等常见功能。

完成后,你就可以在自己的项目中灵活运用表单来处理各种输入需求。

鱼雪

上一章节中,我们已经学习了如何使用 NavigationStack 为用户提供页面间的导航。 本章将探讨另一种常见的内容展示方式——模态视图(Modal View)。

在 iOS 中,模态框常用于提示用户输入或显示新内容,例如创建提醒、填写表单等。 我们还会学习如何在模态视图中加入自定义悬浮按钮(Floating Button)以及如何使用 Alert 发出系统弹窗提示。

鱼雪