From 9f4e3815d453c8b44ae08a89e6770655251536cb Mon Sep 17 00:00:00 2001 From: wangdl Date: Sat, 30 May 2026 09:38:15 +0800 Subject: [PATCH] =?UTF-8?q?feat(ios):=20=E6=92=AD=E6=94=BE/=E6=9A=82?= =?UTF-8?q?=E5=81=9C/=E4=B8=8B=E8=BD=BD/=E4=B8=8A=E4=BC=A0/=E5=B7=A6?= =?UTF-8?q?=E5=8F=B3=E7=AE=AD=E5=A4=B4=206=20=E4=B8=AA=E5=9B=BE=E6=A0=87?= =?UTF-8?q?=E5=85=A8=E9=83=A8=E6=9B=BF=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - icon-play / icon-pause / icon-download / icon-upload - icon-chevron-left / icon-chevron-right - 全局替换 systemName: chevron/play 引用 Co-Authored-By: Claude Opus 4.7 --- .../Icons/icon-chevron-left.imageset/Contents.json | 1 + .../icon-chevron-left.imageset/icon-chevron-left.svg | 1 + .../Icons/icon-chevron-right.imageset/Contents.json | 1 + .../icon-chevron-right.imageset/icon-chevron-right.svg | 1 + .../Icons/icon-download.imageset/Contents.json | 1 + .../Icons/icon-download.imageset/icon-download.svg | 1 + .../Icons/icon-pause.imageset/Contents.json | 1 + .../Icons/icon-pause.imageset/icon-pause.svg | 1 + .../Icons/icon-play.imageset/Contents.json | 1 + .../Icons/icon-play.imageset/icon-play.svg | 1 + .../Icons/icon-upload.imageset/Contents.json | 1 + .../Icons/icon-upload.imageset/icon-upload.svg | 1 + .../AIStudyApp/Features/AI/AIFeedbackPageView.swift | 4 ++-- AIStudyApp/AIStudyApp/Features/AI/AIHomeView.swift | 2 +- .../AIStudyApp/Features/Library/LibrarySubpages.swift | 4 ++-- .../AIStudyApp/Features/Profile/ProfileView.swift | 10 +++++----- .../AIStudyApp/Features/Profile/SettingsView.swift | 2 +- AIStudyApp/AIStudyApp/Features/Quiz/QuizViews.swift | 6 +++--- .../Features/Study/LearningSessionView.swift | 2 +- .../AIStudyApp/Features/Study/StudyHomeView.swift | 2 +- 20 files changed, 28 insertions(+), 16 deletions(-) create mode 100644 AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-chevron-left.imageset/Contents.json create mode 100644 AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-chevron-left.imageset/icon-chevron-left.svg create mode 100644 AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-chevron-right.imageset/Contents.json create mode 100644 AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-chevron-right.imageset/icon-chevron-right.svg create mode 100644 AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-download.imageset/Contents.json create mode 100644 AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-download.imageset/icon-download.svg create mode 100644 AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-pause.imageset/Contents.json create mode 100644 AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-pause.imageset/icon-pause.svg create mode 100644 AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-play.imageset/Contents.json create mode 100644 AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-play.imageset/icon-play.svg create mode 100644 AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-upload.imageset/Contents.json create mode 100644 AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-upload.imageset/icon-upload.svg diff --git a/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-chevron-left.imageset/Contents.json b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-chevron-left.imageset/Contents.json new file mode 100644 index 0000000..ee8220d --- /dev/null +++ b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-chevron-left.imageset/Contents.json @@ -0,0 +1 @@ +{"images":[{"filename":"icon-chevron-left.svg","idiom":"universal"}],"info":{"author":"xcode","version":1},"properties":{"template-rendering-intent":"template","preserves-vector-representation":true}} diff --git a/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-chevron-left.imageset/icon-chevron-left.svg b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-chevron-left.imageset/icon-chevron-left.svg new file mode 100644 index 0000000..83eacc2 --- /dev/null +++ b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-chevron-left.imageset/icon-chevron-left.svg @@ -0,0 +1 @@ + diff --git a/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-chevron-right.imageset/Contents.json b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-chevron-right.imageset/Contents.json new file mode 100644 index 0000000..f476b9f --- /dev/null +++ b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-chevron-right.imageset/Contents.json @@ -0,0 +1 @@ +{"images":[{"filename":"icon-chevron-right.svg","idiom":"universal"}],"info":{"author":"xcode","version":1},"properties":{"template-rendering-intent":"template","preserves-vector-representation":true}} diff --git a/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-chevron-right.imageset/icon-chevron-right.svg b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-chevron-right.imageset/icon-chevron-right.svg new file mode 100644 index 0000000..9179905 --- /dev/null +++ b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-chevron-right.imageset/icon-chevron-right.svg @@ -0,0 +1 @@ + diff --git a/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-download.imageset/Contents.json b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-download.imageset/Contents.json new file mode 100644 index 0000000..6b6ac4a --- /dev/null +++ b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-download.imageset/Contents.json @@ -0,0 +1 @@ +{"images":[{"filename":"icon-download.svg","idiom":"universal"}],"info":{"author":"xcode","version":1},"properties":{"template-rendering-intent":"template","preserves-vector-representation":true}} diff --git a/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-download.imageset/icon-download.svg b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-download.imageset/icon-download.svg new file mode 100644 index 0000000..298b7f7 --- /dev/null +++ b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-download.imageset/icon-download.svg @@ -0,0 +1 @@ + diff --git a/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-pause.imageset/Contents.json b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-pause.imageset/Contents.json new file mode 100644 index 0000000..95cfd92 --- /dev/null +++ b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-pause.imageset/Contents.json @@ -0,0 +1 @@ +{"images":[{"filename":"icon-pause.svg","idiom":"universal"}],"info":{"author":"xcode","version":1},"properties":{"template-rendering-intent":"template","preserves-vector-representation":true}} diff --git a/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-pause.imageset/icon-pause.svg b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-pause.imageset/icon-pause.svg new file mode 100644 index 0000000..4ee1cd2 --- /dev/null +++ b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-pause.imageset/icon-pause.svg @@ -0,0 +1 @@ + diff --git a/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-play.imageset/Contents.json b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-play.imageset/Contents.json new file mode 100644 index 0000000..b20c33b --- /dev/null +++ b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-play.imageset/Contents.json @@ -0,0 +1 @@ +{"images":[{"filename":"icon-play.svg","idiom":"universal"}],"info":{"author":"xcode","version":1},"properties":{"template-rendering-intent":"template","preserves-vector-representation":true}} diff --git a/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-play.imageset/icon-play.svg b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-play.imageset/icon-play.svg new file mode 100644 index 0000000..e2da779 --- /dev/null +++ b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-play.imageset/icon-play.svg @@ -0,0 +1 @@ + diff --git a/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-upload.imageset/Contents.json b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-upload.imageset/Contents.json new file mode 100644 index 0000000..4be3446 --- /dev/null +++ b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-upload.imageset/Contents.json @@ -0,0 +1 @@ +{"images":[{"filename":"icon-upload.svg","idiom":"universal"}],"info":{"author":"xcode","version":1},"properties":{"template-rendering-intent":"template","preserves-vector-representation":true}} diff --git a/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-upload.imageset/icon-upload.svg b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-upload.imageset/icon-upload.svg new file mode 100644 index 0000000..cce8c27 --- /dev/null +++ b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-upload.imageset/icon-upload.svg @@ -0,0 +1 @@ + diff --git a/AIStudyApp/AIStudyApp/Features/AI/AIFeedbackPageView.swift b/AIStudyApp/AIStudyApp/Features/AI/AIFeedbackPageView.swift index 95a22c1..09f96cd 100644 --- a/AIStudyApp/AIStudyApp/Features/AI/AIFeedbackPageView.swift +++ b/AIStudyApp/AIStudyApp/Features/AI/AIFeedbackPageView.swift @@ -74,7 +74,7 @@ struct AIFeedbackPageView: View { NavigationLink(value: Route.aiChat) { HStack(spacing: 4) { Text("深入提问").font(.system(size: 13)) - Image(systemName: "chevron.right").font(.system(size: 14)) + Image("icon-chevron-right").resizable().scaledToFit().frame(width: 14, height: 14) } .foregroundColor(Color.zxF05) .frame(maxWidth: .infinity).frame(height: 44) @@ -85,7 +85,7 @@ struct AIFeedbackPageView: View { NavigationLink(value: Route.dailyThinking) { HStack(spacing: 4) { Text("再来一题").font(.system(size: 13)) - Image(systemName: "chevron.right").font(.system(size: 14)) + Image("icon-chevron-right").resizable().scaledToFit().frame(width: 14, height: 14) } .foregroundColor(Color.zxF05) .frame(maxWidth: .infinity).frame(height: 44) diff --git a/AIStudyApp/AIStudyApp/Features/AI/AIHomeView.swift b/AIStudyApp/AIStudyApp/Features/AI/AIHomeView.swift index 76ce5ca..e7e6170 100644 --- a/AIStudyApp/AIStudyApp/Features/AI/AIHomeView.swift +++ b/AIStudyApp/AIStudyApp/Features/AI/AIHomeView.swift @@ -388,7 +388,7 @@ struct AIHomeView: View { Spacer() - Image(systemName: "chevron.right") + Image("icon-chevron-right") .font(.system(size: 10, weight: .semibold)) .foregroundColor(Color.zxInkTertiary) } diff --git a/AIStudyApp/AIStudyApp/Features/Library/LibrarySubpages.swift b/AIStudyApp/AIStudyApp/Features/Library/LibrarySubpages.swift index df40f1f..7c51145 100644 --- a/AIStudyApp/AIStudyApp/Features/Library/LibrarySubpages.swift +++ b/AIStudyApp/AIStudyApp/Features/Library/LibrarySubpages.swift @@ -93,7 +93,7 @@ struct CreateLibraryPage: View { Text("选择一张图片作为封面").font(.system(size: 12)).foregroundColor(Color.zxF04) } Spacer() - Image(systemName: "chevron.right").font(.system(size: 14)).foregroundColor(Color.zxF03) + Image("icon-chevron-right").resizable().scaledToFit().frame(width: 14, height: 14).foregroundColor(Color.zxF03) } .padding(.horizontal, 16).padding(.vertical, 14) .background(Color.zxFill004).clipShape(RoundedRectangle(cornerRadius: 14)) @@ -759,7 +759,7 @@ struct ImportPage: View { struct ZXImportRow: View { let icon: String; let title: String; let desc: String var body: some View { HStack(spacing: 14) { Image(systemName: icon).font(.system(size: 22)).foregroundColor(Color.zxPurple).frame(width: 48, height: 48) -; VStack(alignment: .leading, spacing: 2) { Text(title).font(.system(size: 15, weight: .semibold)).foregroundColor(Color.zxF0); Text(desc).font(.system(size: 12)).foregroundColor(Color.zxF04) }; Spacer(); Image(systemName: "chevron.right").font(.system(size: 12)).foregroundColor(Color.zxF03) }.padding(16).background(Color.zxFill003).clipShape(RoundedRectangle(cornerRadius: 16)).overlay(RoundedRectangle(cornerRadius: 16).stroke(Color.zxBorder006, lineWidth: 1)) } +; VStack(alignment: .leading, spacing: 2) { Text(title).font(.system(size: 15, weight: .semibold)).foregroundColor(Color.zxF0); Text(desc).font(.system(size: 12)).foregroundColor(Color.zxF04) }; Spacer(); Image("icon-chevron-right").resizable().scaledToFit().frame(width: 12, height: 12).foregroundColor(Color.zxF03) }.padding(16).background(Color.zxFill003).clipShape(RoundedRectangle(cornerRadius: 16)).overlay(RoundedRectangle(cornerRadius: 16).stroke(Color.zxBorder006, lineWidth: 1)) } } // MARK: - Import Review diff --git a/AIStudyApp/AIStudyApp/Features/Profile/ProfileView.swift b/AIStudyApp/AIStudyApp/Features/Profile/ProfileView.swift index 981a3d4..87fbae4 100644 --- a/AIStudyApp/AIStudyApp/Features/Profile/ProfileView.swift +++ b/AIStudyApp/AIStudyApp/Features/Profile/ProfileView.swift @@ -80,7 +80,7 @@ struct ProfileView: View { Text(profile?.nickname ?? "学习者").font(.system(size: 20, weight: .bold)).foregroundColor(Color.zxF0) Text(profile?.email ?? "").font(.system(size: 12)).foregroundColor(Color.zxF04) } - Spacer(); Image(systemName: "chevron.right").font(.system(size: 14)).foregroundColor(Color.zxF03) + Spacer(); Image("icon-chevron-right").resizable().scaledToFit().frame(width: 14, height: 14).foregroundColor(Color.zxF03) } HStack(spacing: 0) { ZXProfileStat(value: "\(viewModel.summary?.activeDays ?? 0)", label: "活跃天", color: Color.zxOrange); ZXProfileStat(value: "\(viewModel.summary?.totalCardsReviewed ?? 0)", label: "复习卡片", color: Color.zxPurple); ZXProfileStat(value: "\(viewModel.summary?.totalMinutes ?? 0)", label: "分钟", color: Color.zxTeal) } }.padding(20).background(ZXGradient.profileCard).overlay(RoundedRectangle(cornerRadius: 20).stroke(Color(hex: "#7C6EFA", opacity: 0.2), lineWidth: 1)).clipShape(RoundedRectangle(cornerRadius: 20)) @@ -99,7 +99,7 @@ struct ProfileView: View { Text("学习资产").font(.system(size: 14, weight: .semibold)).foregroundColor(Color.zxF0) Spacer() Text("\(viewModel.kbCount)库 \(viewModel.itemCount)项 \(viewModel.cardCount)卡").font(.system(size: 12)).foregroundColor(Color.zxF04) - Image(systemName: "chevron.right").font(.system(size: 12)).foregroundColor(Color.zxF03) + Image("icon-chevron-right").resizable().scaledToFit().frame(width: 12, height: 12).foregroundColor(Color.zxF03) }.padding(.horizontal, 16).padding(.vertical, 14) }.foregroundColor(.primary) ZXProfileDivider() @@ -108,7 +108,7 @@ struct ProfileView: View { Image(systemName: "bell.fill").font(.system(size: 18)).foregroundColor(Color.zxOrange).frame(width: 36, height: 36) Text("消息中心").font(.system(size: 14, weight: .semibold)).foregroundColor(Color.zxF0) - Spacer(); Image(systemName: "chevron.right").font(.system(size: 12)).foregroundColor(Color.zxF03) + Spacer(); Image("icon-chevron-right").resizable().scaledToFit().frame(width: 12, height: 12).foregroundColor(Color.zxF03) }.padding(.horizontal, 16).padding(.vertical, 14) }.foregroundColor(.primary) ZXProfileDivider() @@ -119,7 +119,7 @@ struct ProfileView: View { Text("存储空间").font(.system(size: 14, weight: .semibold)).foregroundColor(Color.zxF0) Text(viewModel.formattedStorage).font(.system(size: 11)).foregroundColor(Color.zxF04) } - Spacer(); Image(systemName: "chevron.right").font(.system(size: 12)).foregroundColor(Color.zxF03) + Spacer(); Image("icon-chevron-right").resizable().scaledToFit().frame(width: 12, height: 12).foregroundColor(Color.zxF03) }.padding(.horizontal, 16).padding(.vertical, 14) }.background(Color.zxFill004).clipShape(RoundedRectangle(cornerRadius: 20)).overlay(RoundedRectangle(cornerRadius: 20).stroke(Color.zxBorder006, lineWidth: 1)) } @@ -129,7 +129,7 @@ struct ZXProfileStat: View { let v: String; let l: String; let c: Color; var bod init(value: String, label: String, color: Color) { self.v = value; self.l = label; self.c = color } } struct ZXProfileMenuRow: View { let icon: String; let title: String; let desc: String - var body: some View { HStack(spacing: 12) { Image(systemName: icon).font(.system(size: 18)).foregroundColor(Color.zxF05).frame(width: 36, height: 36).background(Color.zxFill006).clipShape(RoundedRectangle(cornerRadius: 10)); VStack(alignment: .leading, spacing: 2) { Text(title).font(.system(size: 14, weight: .semibold)).foregroundColor(Color.zxF0); Text(desc).font(.system(size: 11)).foregroundColor(Color.zxF03) }; Spacer(); Image(systemName: "chevron.right").font(.system(size: 12)).foregroundColor(Color.zxF03) }.padding(.horizontal, 16).padding(.vertical, 14).accessibilityLabel("\(title):\(desc)") } + var body: some View { HStack(spacing: 12) { Image(systemName: icon).font(.system(size: 18)).foregroundColor(Color.zxF05).frame(width: 36, height: 36).background(Color.zxFill006).clipShape(RoundedRectangle(cornerRadius: 10)); VStack(alignment: .leading, spacing: 2) { Text(title).font(.system(size: 14, weight: .semibold)).foregroundColor(Color.zxF0); Text(desc).font(.system(size: 11)).foregroundColor(Color.zxF03) }; Spacer(); Image("icon-chevron-right").resizable().scaledToFit().frame(width: 12, height: 12).foregroundColor(Color.zxF03) }.padding(.horizontal, 16).padding(.vertical, 14).accessibilityLabel("\(title):\(desc)") } } struct ZXProfileDivider: View { var body: some View { Rectangle().fill(Color.zxBorder008).frame(height: 1).padding(.leading, 64) } diff --git a/AIStudyApp/AIStudyApp/Features/Profile/SettingsView.swift b/AIStudyApp/AIStudyApp/Features/Profile/SettingsView.swift index 192d969..f4cc89f 100644 --- a/AIStudyApp/AIStudyApp/Features/Profile/SettingsView.swift +++ b/AIStudyApp/AIStudyApp/Features/Profile/SettingsView.swift @@ -165,7 +165,7 @@ struct ZXSettingRow: View { Text(title).font(.system(size: 14, weight: .semibold)).foregroundColor(Color.zxF0) Spacer() if !value.isEmpty { Text(value).font(.system(size: 13)).foregroundColor(Color.zxF03) } - Image(systemName: "chevron.right").font(.system(size: 12)).foregroundColor(Color.zxF03) + Image("icon-chevron-right").resizable().scaledToFit().frame(width: 12, height: 12).foregroundColor(Color.zxF03) }.padding(.horizontal, 16).padding(.vertical, 14) } } diff --git a/AIStudyApp/AIStudyApp/Features/Quiz/QuizViews.swift b/AIStudyApp/AIStudyApp/Features/Quiz/QuizViews.swift index d7a463c..43b0a43 100644 --- a/AIStudyApp/AIStudyApp/Features/Quiz/QuizViews.swift +++ b/AIStudyApp/AIStudyApp/Features/Quiz/QuizViews.swift @@ -38,7 +38,7 @@ struct QuizListView: View { ForEach(quizzes) { q in NavigationLink(value: Route.quizTake(quizId: q.id)) { VStack(alignment: .leading, spacing: 8) { - HStack { Text(q.title ?? "测验").font(.system(size: 15, weight: .semibold)).foregroundColor(Color.zxF0); Spacer(); Image(systemName: "chevron.right").font(.system(size: 12)).foregroundColor(Color.zxF03) } + HStack { Text(q.title ?? "测验").font(.system(size: 15, weight: .semibold)).foregroundColor(Color.zxF0); Spacer(); Image("icon-chevron-right").resizable().scaledToFit().frame(width: 12, height: 12).foregroundColor(Color.zxF03) } HStack(spacing: 12) { Label("\(q.questionCount ?? 0) 题", systemImage: "list.bullet").font(.system(size: 11)).foregroundColor(Color.zxF04) Label("选择题/判断/填空", systemImage: "square.grid.3x3").font(.system(size: 11)).foregroundColor(Color.zxF04) @@ -146,12 +146,12 @@ struct QuizTakerView: View { // Navigation buttons HStack { Button { if currentIndex > 0 { currentIndex -= 1 } } label: { - HStack { Image(systemName: "chevron.left"); Text("上一题") }.font(.system(size: 14)).foregroundColor(Color.zxF05).padding(.horizontal, 20).padding(.vertical, 12).background(Color.zxFill004).clipShape(RoundedRectangle(cornerRadius: 10)) + HStack { Image("icon-chevron-left"); Text("上一题") }.font(.system(size: 14)).foregroundColor(Color.zxF05).padding(.horizontal, 20).padding(.vertical, 12).background(Color.zxFill004).clipShape(RoundedRectangle(cornerRadius: 10)) }.disabled(currentIndex == 0) Spacer() if currentIndex < questions.count - 1 { Button { currentIndex += 1 } label: { - HStack { Text("下一题"); Image(systemName: "chevron.right") }.font(.system(size: 14, weight: .medium)).foregroundColor(.white).padding(.horizontal, 20).padding(.vertical, 12).background(ZXGradient.brand).clipShape(RoundedRectangle(cornerRadius: 10)) + HStack { Text("下一题"); Image("icon-chevron-right") }.font(.system(size: 14, weight: .medium)).foregroundColor(.white).padding(.horizontal, 20).padding(.vertical, 12).background(ZXGradient.brand).clipShape(RoundedRectangle(cornerRadius: 10)) } } else { Button { diff --git a/AIStudyApp/AIStudyApp/Features/Study/LearningSessionView.swift b/AIStudyApp/AIStudyApp/Features/Study/LearningSessionView.swift index ed4108d..a17aabe 100644 --- a/AIStudyApp/AIStudyApp/Features/Study/LearningSessionView.swift +++ b/AIStudyApp/AIStudyApp/Features/Study/LearningSessionView.swift @@ -97,7 +97,7 @@ struct LearningSessionView: View { if isRunning { isPaused = true; isRunning = false } else { isPaused = false; isRunning = true } } label: { - Label(isRunning ? "暂停" : "继续", systemImage: isRunning ? "pause.fill" : "play.fill") + Label(isRunning ? "暂停" : "继续", systemImage: isRunning ? "pause.fill" : "icon-play") .font(.system(size: 14, weight: .bold)) .foregroundColor(.white) .frame(maxWidth: .infinity).frame(height: 48) diff --git a/AIStudyApp/AIStudyApp/Features/Study/StudyHomeView.swift b/AIStudyApp/AIStudyApp/Features/Study/StudyHomeView.swift index 1b8742f..a3107ad 100644 --- a/AIStudyApp/AIStudyApp/Features/Study/StudyHomeView.swift +++ b/AIStudyApp/AIStudyApp/Features/Study/StudyHomeView.swift @@ -225,7 +225,7 @@ struct ZXSTaskRow: View { @Binding var task: ZXSTask struct ZXSTaskRowView: View { let task: ZXSTask; var action: () -> Void var body: some View { HStack(spacing: 12) { Image(systemName: task.d ? "checkmark.circle.fill" : "circle").font(.system(size: 20)).foregroundColor(task.d ? Color.zxGreen : Color.zxF02) VStack(alignment: .leading, spacing: 4) { Text(task.t).font(.system(size: 13, weight: .semibold)).foregroundColor(task.d ? Color.zxF04 : Color.zxF0).strikethrough(task.d); HStack(spacing: 8) { Text(task.tp).font(.system(size: 10, weight: .semibold)).foregroundColor(task.c).padding(.horizontal, 6).padding(.vertical, 1).background(task.c.opacity(0.12)).clipShape(Capsule()); Text("约 \(task.m) 分钟").font(.system(size: 10)).foregroundColor(Color(hex:"#F0F0FF",opacity:0.35)) } } - Spacer(); if !task.d { Image(systemName: "play.fill").font(.system(size: 14)).foregroundColor(.white).frame(width: 32, height: 32).background(ZXGradient.brand).clipShape(RoundedRectangle(cornerRadius: 10)) } } + Spacer(); if !task.d { Image("icon-play").font(.system(size: 14)).foregroundColor(.white).frame(width: 32, height: 32).background(ZXGradient.brand).clipShape(RoundedRectangle(cornerRadius: 10)) } } .padding(.horizontal, 16).padding(.vertical, 12).background(task.d ? Color.zxFill003 : Color.zxFill005).overlay(RoundedRectangle(cornerRadius: 14).stroke(task.d ? Color(hex: "#FFFFFF", opacity: 0.05) : Color.zxBorder008, lineWidth: 1)).clipShape(RoundedRectangle(cornerRadius: 14)).opacity(task.d ? 0.6 : 1).contentShape(Rectangle()).onTapGesture { action() }.zxPressable() .accessibilityLabel("\(task.t), \(task.tp), 约\(task.m)分钟") .accessibilityAddTraits(task.d ? .isSelected : [])