From 3c3c586e9ffe85c3e304a8a2bfd984182cbe914b Mon Sep 17 00:00:00 2001 From: wangdl Date: Sat, 30 May 2026 10:06:26 +0800 Subject: [PATCH] =?UTF-8?q?feat(ios):=20=E5=AD=A6=E4=B9=A0=E7=9B=AE?= =?UTF-8?q?=E6=A0=87/=E9=9A=90=E7=A7=81/=E7=94=A8=E6=88=B7=E5=8D=8F?= =?UTF-8?q?=E8=AE=AE/=E8=AF=AD=E8=A8=80/=E5=B8=AE=E5=8A=A9=205=E4=B8=AA?= =?UTF-8?q?=E5=9B=BE=E6=A0=87=E6=9B=BF=E6=8D=A2=20+=20=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=A4=87=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.7 --- .../Icons/icon-agreement.imageset/Contents.json | 1 + .../icon-agreement.imageset/icon-agreement.svg | 1 + .../Icons/icon-goal.imageset/Contents.json | 1 + .../Icons/icon-goal.imageset/icon-goal.svg | 1 + .../Icons/icon-help.imageset/Contents.json | 1 + .../Icons/icon-help.imageset/icon-help.svg | 1 + .../Icons/icon-language.imageset/Contents.json | 1 + .../Icons/icon-language.imageset/icon-language.svg | 1 + .../Icons/icon-privacy.imageset/Contents.json | 1 + .../Icons/icon-privacy.imageset/icon-privacy.svg | 1 + .../AIStudyApp/Features/Profile/SettingsView.swift | 13 +++++-------- 11 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-agreement.imageset/Contents.json create mode 100644 AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-agreement.imageset/icon-agreement.svg create mode 100644 AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-goal.imageset/Contents.json create mode 100644 AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-goal.imageset/icon-goal.svg create mode 100644 AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-help.imageset/Contents.json create mode 100644 AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-help.imageset/icon-help.svg create mode 100644 AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-language.imageset/Contents.json create mode 100644 AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-language.imageset/icon-language.svg create mode 100644 AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-privacy.imageset/Contents.json create mode 100644 AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-privacy.imageset/icon-privacy.svg diff --git a/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-agreement.imageset/Contents.json b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-agreement.imageset/Contents.json new file mode 100644 index 0000000..aa5d624 --- /dev/null +++ b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-agreement.imageset/Contents.json @@ -0,0 +1 @@ +{"images":[{"filename":"icon-agreement.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-agreement.imageset/icon-agreement.svg b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-agreement.imageset/icon-agreement.svg new file mode 100644 index 0000000..985c66d --- /dev/null +++ b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-agreement.imageset/icon-agreement.svg @@ -0,0 +1 @@ + diff --git a/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-goal.imageset/Contents.json b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-goal.imageset/Contents.json new file mode 100644 index 0000000..0bc30d9 --- /dev/null +++ b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-goal.imageset/Contents.json @@ -0,0 +1 @@ +{"images":[{"filename":"icon-goal.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-goal.imageset/icon-goal.svg b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-goal.imageset/icon-goal.svg new file mode 100644 index 0000000..0152d04 --- /dev/null +++ b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-goal.imageset/icon-goal.svg @@ -0,0 +1 @@ + diff --git a/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-help.imageset/Contents.json b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-help.imageset/Contents.json new file mode 100644 index 0000000..bf99733 --- /dev/null +++ b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-help.imageset/Contents.json @@ -0,0 +1 @@ +{"images":[{"filename":"icon-help.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-help.imageset/icon-help.svg b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-help.imageset/icon-help.svg new file mode 100644 index 0000000..6e45911 --- /dev/null +++ b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-help.imageset/icon-help.svg @@ -0,0 +1 @@ + diff --git a/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-language.imageset/Contents.json b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-language.imageset/Contents.json new file mode 100644 index 0000000..f87e7c8 --- /dev/null +++ b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-language.imageset/Contents.json @@ -0,0 +1 @@ +{"images":[{"filename":"icon-language.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-language.imageset/icon-language.svg b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-language.imageset/icon-language.svg new file mode 100644 index 0000000..ad3df76 --- /dev/null +++ b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-language.imageset/icon-language.svg @@ -0,0 +1 @@ + diff --git a/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-privacy.imageset/Contents.json b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-privacy.imageset/Contents.json new file mode 100644 index 0000000..d999fbf --- /dev/null +++ b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-privacy.imageset/Contents.json @@ -0,0 +1 @@ +{"images":[{"filename":"icon-privacy.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-privacy.imageset/icon-privacy.svg b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-privacy.imageset/icon-privacy.svg new file mode 100644 index 0000000..c4b8589 --- /dev/null +++ b/AIStudyApp/AIStudyApp/Assets.xcassets/Icons/icon-privacy.imageset/icon-privacy.svg @@ -0,0 +1 @@ + diff --git a/AIStudyApp/AIStudyApp/Features/Profile/SettingsView.swift b/AIStudyApp/AIStudyApp/Features/Profile/SettingsView.swift index f754dc7..a32a531 100644 --- a/AIStudyApp/AIStudyApp/Features/Profile/SettingsView.swift +++ b/AIStudyApp/AIStudyApp/Features/Profile/SettingsView.swift @@ -25,7 +25,7 @@ struct SettingsView: View { .contentShape(Rectangle()) .onTapGesture { cycleAppearance() } ZXSettingDivider() - ZXSettingRow(title: "语言", value: language == "zh-CN" ? "简体中文" : "English", icon: "globe", color: Color.zxF05) + ZXSettingRow(title: "语言", value: language == "zh-CN" ? "简体中文" : "English", icon: "icon-language", isCustom: true, color: Color.zxF05) } .background(Color.zxFill004).clipShape(RoundedRectangle(cornerRadius: 20)) .overlay(RoundedRectangle(cornerRadius: 20).stroke(Color.zxBorder006, lineWidth: 1)) @@ -33,7 +33,7 @@ struct SettingsView: View { sectionHeader("学习设置") VStack(spacing: 0) { NavigationLink(value: Route.goalSetting) { - ZXSettingRow(title: "学习目标", value: "备考考试", icon: "target", color: Color.zxF05) + ZXSettingRow(title: "学习目标", value: "备考考试", icon: "icon-goal", isCustom: true, color: Color.zxF05) }.foregroundColor(.primary) ZXSettingDivider() NavigationLink(value: Route.methodPreference) { @@ -59,20 +59,17 @@ struct SettingsView: View { sectionHeader("数据") VStack(spacing: 0) { ZXSettingToggleRow(title: "iCloud 同步", icon: "icon-upload", color: Color.zxF05, isOn: $iCloudSync, isCustom: true) - ZXSettingDivider() - ZXSettingToggleRow(title: "自动备份", icon: "arrow.triangle.2.circlepath", color: Color.zxF05, isOn: $autoBackup) - } .background(Color.zxFill004).clipShape(RoundedRectangle(cornerRadius: 20)) .overlay(RoundedRectangle(cornerRadius: 20).stroke(Color.zxBorder006, lineWidth: 1)) VStack(spacing: 0) { NavigationLink(value: Route.feedbackForm) { - ZXSettingRow(title: "帮助与反馈", value: "", icon: "questionmark.circle.fill", color: Color.zxF05) + ZXSettingRow(title: "帮助与反馈", value: "", icon: "icon-help", isCustom: true, color: Color.zxF05) }.foregroundColor(.primary) ZXSettingDivider() - ZXSettingRow(title: "隐私政策", value: "", icon: "hand.raised.fill", color: Color.zxF05) + ZXSettingRow(title: "隐私政策", value: "", icon: "icon-privacy", isCustom: true, color: Color.zxF05) ZXSettingDivider() - ZXSettingRow(title: "用户协议", value: "", icon: "doc.text.fill", color: Color.zxF05) + ZXSettingRow(title: "用户协议", value: "", icon: "icon-agreement", isCustom: true, color: Color.zxF05) } .background(Color.zxFill004).clipShape(RoundedRectangle(cornerRadius: 20)) .overlay(RoundedRectangle(cornerRadius: 20).stroke(Color.zxBorder006, lineWidth: 1))