替换 Xcode 默认模板: - 删除 ContentView/Item/__App - 新增 App/TijiApp(SwiftData ModelContainer)、RootView(3 Tab + RecordSheet) - DesignSystem:Tokens(色板/字体/圆角)+ Components(卡片/按钮/Chip) - Models:Indicator / Report / DiaryEntry @Model 初版 - Features:Home / Quick(A1-A3)/ Archive(B1-B5)/ Record / Trends / Me 静态 UI W2 AI 基座工作将在此基线上叠加。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
61 lines
1.6 KiB
Swift
61 lines
1.6 KiB
Swift
import SwiftUI
|
|
|
|
private enum QuickStep: Hashable {
|
|
case viewfinder
|
|
case confirm
|
|
case batch
|
|
}
|
|
|
|
struct QuickCaptureFlow: View {
|
|
var onClose: () -> Void
|
|
|
|
@State private var step: QuickStep = .viewfinder
|
|
@State private var snapCount = 0
|
|
|
|
var body: some View {
|
|
ZStack {
|
|
switch step {
|
|
case .viewfinder:
|
|
A1ViewfinderView(
|
|
onShoot: {
|
|
snapCount += 1
|
|
withAnimation(.easeInOut(duration: 0.25)) { step = .confirm }
|
|
},
|
|
onClose: onClose
|
|
)
|
|
.transition(.opacity)
|
|
|
|
case .confirm:
|
|
A2ConfirmView(
|
|
onSave: {
|
|
if snapCount >= 2 {
|
|
withAnimation { step = .batch }
|
|
} else {
|
|
onClose()
|
|
}
|
|
},
|
|
onNext: {
|
|
withAnimation { step = .viewfinder }
|
|
},
|
|
onBack: {
|
|
withAnimation { step = .viewfinder }
|
|
}
|
|
)
|
|
.transition(.opacity)
|
|
|
|
case .batch:
|
|
A3BatchView(
|
|
onAddMore: {
|
|
withAnimation { step = .viewfinder }
|
|
},
|
|
onFinish: onClose,
|
|
onBack: {
|
|
withAnimation { step = .confirm }
|
|
}
|
|
)
|
|
.transition(.opacity)
|
|
}
|
|
}
|
|
}
|
|
}
|