swift-swiftui.md 2.8 KB

Swift (SwiftUI) 项目:“每日名言” iOS App

概述

使用 Swift 和 SwiftUI 构建一个设计简洁的 iOS 应用。应用每天从 API 获取并展示一条名言,支持收藏和分享,并提供主屏幕小组件。

功能需求

1. 主屏幕 (Quote View)

  • 每日名言: 启动时自动从 API 请求并显示名言及其作者。
  • 背景: 使用高质量图片或渐变色作为背景。
  • 操作: 提供刷新、分享(通过原生 Share Sheet)和收藏(保存到本地)按钮。

2. 收藏夹 (Favorites View)

  • 导航: 从主屏幕可跳转至此页面。
  • 列表: 使用 List 展示所有收藏的名言。
  • 持久化: 收藏记录需本地持久化(Core Data, SwiftData, 或 UserDefaults)。
  • 删除: 支持左滑删除收藏。

3. 小组件 (WidgetKit)

  • 主屏幕小组件: 创建一个展示每日名言的 iOS 主屏幕小组件。
  • 自动更新: 小组件能每天自动更新内容。

技术栈

  • 语言: Swift
  • UI: SwiftUI
  • 生命周期: SwiftUI App Life Cycle
  • 网络: URLSession with async/await
  • 持久化: Core Data, SwiftData (iOS 17+), 或 UserDefaults+Codable
  • 状态管理: @State, @StateObject, @EnvironmentObject
  • 小组件: WidgetKit
  • API: 免费名言 API (e.g., zenquotes.io, quotable.io)

项目结构 (Xcode)

/QuoteApp
├── QuoteApp/                 # 主应用 Target
│   ├── Views/                # SwiftUI 视图
│   ├── ViewModels/           # ViewModels
│   ├── Models/               # 数据模型
│   ├── Services/             # 网络和数据服务
│   └── QuoteAppApp.swift     # 应用入口
└── QuoteAppWidget/           # Widget Target
    └── QuoteAppWidget.swift

任务步骤

  1. 初始化: 在 Xcode 中创建新的 SwiftUI 应用项目。
  2. API服务: 创建 QuoteAPIService,使用 async/await 获取名言。定义 Quote 模型以匹配 JSON 响应。
  3. 持久化: 选择并设置一种本地数据持久化方案。
  4. ViewModel: 创建 QuoteViewModel (ObservableObject),负责获取数据、处理收藏和分享逻辑。
  5. 主视图: 设计 QuoteView 并与 ViewModel 连接。使用 UIViewControllerRepresentable 封装 UIActivityViewController 以实现分享。
  6. 收藏夹: 创建 FavoritesView,从本地存储中读取并显示列表,实现删除功能。
  7. 导航: 使用 NavigationStackNavigationView 连接主视图和收藏夹。
  8. 小组件: 添加 Widget Extension Target,在 TimelineProvider 中实现每日更新逻辑,并设计小组件 UI。
  9. UI/UX: 添加动画,优化字体和颜色,提升视觉体验。

先行任务: 选定一个名言 API 并研究其文档。设计 App 主屏幕和小组件的线框图。