跳到主要内容

15 篇博文 含有标签「iOS」

查看所有标签

上一章节我们 介绍了如何通过 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 发出系统弹窗提示。

鱼雪

上一节我们介绍了 SwiftUI 的列表(List)视图,ForEachIdentifiable协议。

这一节我们将详细介绍在 SwiftUI 中如何使用 NavigationView(iOS 16 前)和 NavigationStack(iOS 16 及更高版本) 来构建导航界面,同时探讨如何自定义导航栏的外观、返回按钮,以及使用 SwiftUI 提供的 toolbar 等高级用法。

在 iOS 应用开发中,导航界面是非常常见且重要的部分。无论是显示一系列数据还是管理不同的功能模块, 都少不了使用导航栏和导航视图来为用户提供分层次的浏览体验。 本文将详细介绍在 SwiftUI 中如何使用 NavigationView(iOS 16 前)和 NavigationStack(iOS 16 及更高版本) 来构建导航界面,同时探讨如何自定义导航栏的外观、返回按钮,以及使用 SwiftUI 提供的 toolbar 等高级用法。

鱼雪

上一节 我们介绍了 SwiftUI 中的动画和过渡效果,本节我们继续介绍 SwiftUI 中的列表视图。

在 UIKit 中, UITableView 是使用最为广泛的 UI 控件之一,常见于新闻类应用、社交应用等。 在 SwiftUI 出现之前,我们需要编写大量的代码和配置(比如自定义单元格、设置数据源等), 才能在 UITableView 中显示简单的列表。

如今,SwiftUI 中的 List 控件让这一切变得非常简单: 几行代码就可以快速实现一个动态列表,而且可以轻松自定义行布局。

本文将系统讲解如何使用 ListForEach 来展示简单或复杂的列表数据, 同时结合 Identifiable 协议来为每一个元素提供唯一标识。 我们还会深入介绍如何自定义列表分割线、背景以及在不同场景下灵活运用各种行布局。

鱼雪

上一节我们介绍了 SwiftUI 中的 PathShape 控件, 本节我们将介绍 SwiftUI 中的动画与过渡。

SwiftUI 的出现,让我们在进行动画开发时,可以像在 Keynote 中使用 “Magic Move” 一样简单。 Keynote 的 Magic Move 会自动分析幻灯片之间元素的变化并自动添加过渡效果; 而在 SwiftUI 中,你只需要定义视图的两个状态,SwiftUI 就能帮你完成从一个状态到另一个状态的动画过渡。

在这篇文章里,你将学习如何使用 SwiftUI 提供的 隐式动画显式动画 来为视图创建各种动画效果,以及如何在视图之间使用 Transitions(过渡)来实现插入与移除动画。

鱼雪

上一篇博客我们介绍了 SwiftUI 中的 @State@Binding 控件,

今天我们来介绍 SwiftUI 中的 PathShape 控件。

在iOS开发中,很多资深开发者都使用过Core Graphics来绘制自定义的图形和控件。 随着SwiftUI的兴起,Apple也为我们提供了强大的Path和Shape API, 可以用更简洁、更声明式的方式来绘制各种矢量图形。

在本教程中,你将学习如何使用SwiftUI的PathShape协议来绘制直线、弧线, 以及进阶的饼图与甜甜圈图表。

本教程主要涵盖:

  • 理解Path类型,并在SwiftUI中绘制线条与形状
  • 探索Shape协议,自定义绘制复杂形状
  • 使用Path.addArc绘制弧线、饼图
  • 创建基于Circle的进度指示器
  • 利用Circle().trim(from:to:)绘制甜甜圈图表

通过阅读本文并练习其中的示例,你将能够更灵活地利用SwiftUI中的绘制功能,实现个性化的UI控件与数据可视化组件。

鱼雪