import SwiftUI struct SettingsView: View { @StateObject private var languageManager = LanguageManager.shared @Environment(\.dismiss) private var dismiss var body: some View { NavigationView { ZStack { // 背景渐变 LinearGradient( gradient: Gradient(colors: [ Color(.systemBackground), Color(.systemGray6).opacity(0.2) ]), startPoint: .top, endPoint: .bottom ) .ignoresSafeArea() ScrollView { VStack(spacing: 24) { // 顶部图标 VStack(spacing: 16) { ZStack { Circle() .fill( LinearGradient( gradient: Gradient(colors: [ Color.blue.opacity(0.1), Color.blue.opacity(0.05) ]), startPoint: .topLeading, endPoint: .bottomTrailing ) ) .frame(width: 80, height: 80) Image(systemName: "gearshape.fill") .font(.system(size: 36, weight: .light)) .foregroundColor(.blue) } Text("设置") .font(.system(size: 28, weight: .bold, design: .rounded)) .foregroundColor(.primary) } .padding(.top, 20) // 语言设置卡片 VStack(alignment: .leading, spacing: 16) { HStack { Image(systemName: "globe") .font(.system(size: 20, weight: .medium)) .foregroundColor(.blue) .frame(width: 32) VStack(alignment: .leading, spacing: 4) { Text("语言设置") .font(.system(size: 18, weight: .semibold)) Text("选择应用显示语言") .font(.system(size: 14)) .foregroundColor(.secondary) } Spacer() } Picker("语言", selection: $languageManager.currentLanguage) { ForEach(Language.allCases, id: \.self) { language in Text(language.displayName).tag(language) } } .pickerStyle(SegmentedPickerStyle()) } .padding(20) .background( RoundedRectangle(cornerRadius: 16) .fill(Color(.systemBackground)) .shadow(color: .black.opacity(0.05), radius: 8, x: 0, y: 2) ) .padding(.horizontal, 20) // 应用信息卡片 VStack(alignment: .leading, spacing: 16) { HStack { Image(systemName: "info.circle") .font(.system(size: 20, weight: .medium)) .foregroundColor(.green) .frame(width: 32) Text("应用信息") .font(.system(size: 18, weight: .semibold)) Spacer() } VStack(spacing: 12) { HStack { Text("版本") .font(.system(size: 16)) .foregroundColor(.secondary) Spacer() Text("1.0.0") .font(.system(size: 16, weight: .medium)) } HStack { Text("构建版本") .font(.system(size: 16)) .foregroundColor(.secondary) Spacer() Text("1") .font(.system(size: 16, weight: .medium)) } } } .padding(20) .background( RoundedRectangle(cornerRadius: 16) .fill(Color(.systemBackground)) .shadow(color: .black.opacity(0.05), radius: 8, x: 0, y: 2) ) .padding(.horizontal, 20) // 功能说明卡片 VStack(alignment: .leading, spacing: 16) { HStack { Image(systemName: "star.fill") .font(.system(size: 20, weight: .medium)) .foregroundColor(.orange) .frame(width: 32) Text("功能特色") .font(.system(size: 18, weight: .semibold)) Spacer() } VStack(spacing: 16) { FeatureRow( icon: "camera.fill", iconColor: .blue, title: "扫描功能", description: "支持扫描二维码和条形码,自动识别类型并保存到历史记录" ) FeatureRow( icon: "plus.circle.fill", iconColor: .green, title: "创建功能", description: "可以手动创建各种类型的二维码和条形码" ) FeatureRow( icon: "clock.arrow.circlepath", iconColor: .orange, title: "历史记录", description: "自动保存所有扫描和创建的条码,支持收藏和管理" ) } } .padding(20) .background( RoundedRectangle(cornerRadius: 16) .fill(Color(.systemBackground)) .shadow(color: .black.opacity(0.05), radius: 8, x: 0, y: 2) ) .padding(.horizontal, 20) // 关于卡片 VStack(alignment: .leading, spacing: 16) { HStack { Image(systemName: "heart.fill") .font(.system(size: 20, weight: .medium)) .foregroundColor(.red) .frame(width: 32) Text("关于") .font(.system(size: 18, weight: .semibold)) Spacer() } Text("QR Scanner 是一款功能强大的二维码和条形码扫描应用,支持多种格式的条码识别和创建。") .font(.system(size: 14)) .foregroundColor(.secondary) .lineLimit(nil) } .padding(20) .background( RoundedRectangle(cornerRadius: 16) .fill(Color(.systemBackground)) .shadow(color: .black.opacity(0.05), radius: 8, x: 0, y: 2) ) .padding(.horizontal, 20) Spacer(minLength: 30) } } } .navigationTitle("") .navigationBarTitleDisplayMode(.inline) .navigationBarBackButtonHidden(false) } } } // MARK: - 功能行组件 struct FeatureRow: View { let icon: String let iconColor: Color let title: String let description: String var body: some View { HStack(alignment: .top, spacing: 12) { Image(systemName: icon) .font(.system(size: 16, weight: .medium)) .foregroundColor(iconColor) .frame(width: 20) VStack(alignment: .leading, spacing: 4) { Text(title) .font(.system(size: 16, weight: .medium)) Text(description) .font(.system(size: 14)) .foregroundColor(.secondary) .lineLimit(3) } Spacer() } } } #Preview { SettingsView() }