一个基于 SwiftUI 开发的跨平台番茄钟应用,支持 iOS、iPadOS 和 macOS。
- 多种计时模式:单次番茄、纯休息、正计时
- 可自定义时间:支持设置番茄时间、短休息、长休息时长
- 优雅的界面设计:圆形进度条、现代化 UI
- 跨平台支持:一套代码,支持 iPhone、iPad、Mac
- 背景音乐播放:支持选择本地音乐文件夹
- 音乐格式支持:MP3、M4A、WAV、AAC、FLAC
- 播放控制:播放/暂停、上一首/下一首、音量调节
- 循环播放:自动循环播放选中的音乐
- 日视图:以时间轴形式显示当天所有事件
- 事件管理:添加、编辑、删除专注事件
- 事件类型:番茄时间、短休息、长休息、自定义
- 完成状态:标记事件完成状态
- 当前时间指示器:实时显示当前时间位置
- 今日统计:完成番茄数、专注时间、平均时长
- 历史记录:查看过往的专注记录
- 周统计:本周完成情况概览
LifeTimer/
├── PomodoroTimerApp.swift # 应用入口
├── Models/
│ ├── TimerModel.swift # 计时器数据模型
│ └── EventModel.swift # 事件数据模型
├── Views/
│ ├── ContentView.swift # 主界面
│ ├── TimerView.swift # 计时器界面
│ ├── CalendarView.swift # 日历界面
│ └── SettingsView.swift # 设置界面
├── Managers/
│ └── AudioManager.swift # 音频管理器
├── Assets.xcassets/ # 资源文件
├── Preview Content/ # 预览资源
└── LifeTimer.entitlements # 应用权限配置
- SwiftUI:现代化的声明式 UI 框架
- Combine:响应式编程框架
- AVFoundation:音频播放框架
- Foundation:基础数据处理
- MVVM:Model-View-ViewModel 架构
- ObservableObject:数据绑定和状态管理
- Environment Objects:跨视图数据共享
- UserDefaults:用户设置和偏好存储
- JSON 编码/解码:事件数据序列化
- 开发环境:Xcode 15.0 或更高版本
- macOS:macOS 13.0 或更高版本
- iOS:iOS 16.0 或更高版本
- iPadOS:iPadOS 16.0 或更高版本
-
打开项目
cd /Users/hewro/Documents/life open LifeTimer.xcodeproj
-
选择目标平台
- 在 Xcode 中选择目标设备(iPhone、iPad 或 Mac)
- 确保选择了正确的 Scheme
-
编译运行
- 按
Cmd + R
编译并运行 - 或者点击 Xcode 工具栏中的播放按钮
- 按
# 编译 macOS 版本
xcodebuild -project LifeTimer.xcodeproj -scheme LifeTimer -destination 'platform=macOS' build
# 编译 iOS 版本
xcodebuild -project LifeTimer.xcodeproj -scheme LifeTimer -destination 'platform=iOS Simulator,name=iPhone 15' build
# 编译 iPadOS 版本
xcodebuild -project LifeTimer.xcodeproj -scheme LifeTimer -destination 'platform=iOS Simulator,name=iPad Pro (12.9-inch) (6th generation)' build
-
启动计时器
- 选择计时模式(单次番茄/纯休息/正计时)
- 点击中央的播放按钮开始计时
- 可随时暂停或重置计时器
-
设置背景音乐
- 进入设置页面
- 点击「选择」按钮选择音乐文件夹
- 在音乐列表中选择要播放的音乐
-
管理日程
- 切换到日历标签页
- 查看当天的专注事件
- 点击「+」按钮添加新事件
-
查看统计
- 在设置页面查看今日统计
- 点击「查看详细统计」了解更多数据
- 番茄时间:1-120 分钟(默认 25 分钟)
- 短休息:1-120 分钟(默认 5 分钟)
- 长休息:1-120 分钟(默认 15 分钟)
- 支持的格式:MP3、M4A、WAV、AAC、FLAC
- 音量调节:0-100%
- 自动循环播放
- 播放列表管理
- 事件类型:番茄时间、短休息、长休息、自定义
- 时间设置:精确到分钟
- 完成状态:手动标记完成
- 删除功能:支持删除不需要的事件
-
创建新的 View
struct NewFeatureView: View { var body: some View { // 实现界面 } }
-
扩展数据模型
class NewDataModel: ObservableObject { @Published var property: Type // 添加新属性和方法 }
-
集成到主界面
- 在
ContentView
中添加新的标签页 - 或在现有界面中添加导航链接
- 在
应用使用系统颜色,自动支持深色模式。如需自定义主题:
- 在
Assets.xcassets
中添加颜色资源 - 创建颜色扩展:
extension Color { static let customPrimary = Color("CustomPrimary") }
- 创建
Localizable.strings
文件 - 使用
NSLocalizedString
替换硬编码文本 - 在项目设置中添加支持的语言
-
音频无法播放
- 检查文件格式是否支持
- 确认文件路径是否正确
- 检查系统音量设置
-
计时器不准确
- 确保应用在前台运行
- 检查系统时间设置
- 重启应用重新校准
-
数据丢失
- 数据存储在 UserDefaults 中
- 卸载应用会清除所有数据
- 建议定期导出重要数据
-
使用 Xcode 调试器
- 设置断点查看变量值
- 使用
po
命令打印对象
-
日志输出
print("Debug info: \(variable)")
-
模拟器测试
- 测试不同设备尺寸
- 验证深色模式适配
- 检查性能表现
- ✅ 基础计时功能
- ✅ 多种计时模式
- ✅ 背景音乐播放
- ✅ 日历事件管理
- ✅ 统计功能
- ✅ 跨平台支持
- 🔄 通知提醒
- 🔄 数据导出
- 🔄 云同步
- 🔄 小组件支持
- 🔄 Apple Watch 支持
欢迎提交 Issue 和 Pull Request!
- Fork 项目
- 创建功能分支
- 提交更改
- 推送到分支
- 创建 Pull Request
本项目采用 MIT 许可证。详见 LICENSE 文件。
享受专注时光!🍅