Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • SwiftUI 项目结构概述

SwiftUI 项目结构概述

1. 基本项目结构

当创建一个新的 SwiftUI 项目时,Xcode 会生成以下核心文件和目录结构:

MyChartApp/
├── MyChartApp.swift          // 主应用入口文件
├── ContentView.swift         // 默认的根视图
├── Assets.xcassets           // 资源文件目录(图片、颜色等)
├── Preview Content/          // 预览专用资源
│   └── Preview Assets.xcassets

2. 关键文件解析

MyChartApp.swift

import SwiftUI

@main
struct MyChartApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()  // 应用的根视图
        }
    }
}
  • @main 标识应用入口
  • 遵循 App 协议定义应用结构
  • WindowGroup 是基础的场景类型

ContentView.swift

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack {
            Image(systemName: "chart.bar")
            Text("Welcome to Chart App")
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

3. SwiftUI 项目的组织特点

与 UIKit 项目的区别

  1. 无 Storyboard:完全代码驱动
  2. 更少的样板代码:不需要 ViewController
  3. 声明式语法:通过 View 协议定义界面

推荐的项目组织方式

Sources/
├── Models/              // 数据模型
├── Views/               // 视图组件
│   ├── Charts/          // 图表专用视图
│   └── Common/          // 通用组件
├── ViewModels/          // 视图模型(MVVM)
└── Utilities/           // 工具类

4. 预览机制

SwiftUI 的实时预览功能由以下部分实现:

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
            .previewDevice("iPhone 14 Pro")
            .previewDisplayName("iPhone 14")
            .environment(\.colorScheme, .dark)  // 支持暗黑模式预览
    }
}

5. 资源管理

Assets.xcassets

  • 存储所有图像、颜色和图标资源
  • 支持多分辨率的图片集
  • 可以通过 Image("name") 直接引用

颜色资源

  1. 在 Assets 中定义颜色集
  2. 通过 Color("myColor") 使用

6. 为图表项目优化的结构建议

// 在专门的文件中定义图表数据模型
struct ChartData: Identifiable {
    let id = UUID()
    let label: String
    let value: Double
}

// 在独立文件中创建可重用图表组件
struct BarChartView: View {
    let data: [ChartData]
    
    var body: some View {
        // 图表实现
    }
}

7. 环境配置

通过 EnvironmentValues 可以访问和修改:

  • 设备方向
  • 颜色方案(亮/暗模式)
  • 区域设置
  • 层级结构信息
@Environment(\.colorScheme) var colorScheme

8. 常见问题解决

问题1:预览不工作

  • 确保没有编译错误
  • 检查 PreviewProvider 是否正确实现
  • 尝试重启 Xcode

问题2:视图更新不及时

  • 确保使用 @State 或 @ObservedObject 包装可变数据
  • 检查是否在 body 中进行了耗时操作

问题3:资源找不到

  • 确认资源已添加到正确的 target
  • 检查资源名称拼写
Last Updated:: 5/18/25, 9:59 AM