From fd550822820d365c840dafbec634369db1bb9018 Mon Sep 17 00:00:00 2001 From: fish Date: Sun, 12 Jul 2026 16:04:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96=E7=BB=93=E6=9E=9C?= =?UTF-8?q?=E5=BD=93=E5=89=8D=E9=A1=B5=E5=B1=95=E7=A4=BA=E5=B9=B6=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E7=BB=93=E6=9E=9C=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Note/FormatterView.swift | 72 ++++++++++++++++++++++++++++------ Note/ResultView.swift | 83 ---------------------------------------- 2 files changed, 60 insertions(+), 95 deletions(-) delete mode 100644 Note/ResultView.swift diff --git a/Note/FormatterView.swift b/Note/FormatterView.swift index da369f5..569a8ff 100644 --- a/Note/FormatterView.swift +++ b/Note/FormatterView.swift @@ -9,8 +9,9 @@ import SwiftUI struct FormatterView: View { @State private var inputText: String = "" - @State private var resultText: String? + @State private var outputText: String = "" @State private var showEmptyAlert: Bool = false + @State private var showCopied: Bool = false var body: some View { NavigationStack { @@ -18,14 +19,14 @@ struct FormatterView: View { TextEditor(text: $inputText) .frame(minHeight: 160) .padding(8) - .background(Color(.systemGray6)) + .background(Color(.systemBackground)) .cornerRadius(8) .overlay( RoundedRectangle(cornerRadius: 8) .stroke(Color(.systemGray4), lineWidth: 1) ) - Button(action: formatAndNavigate) { + Button(action: formatText) { Label("格式化", systemImage: "wand.and.stars") .font(.headline) .frame(maxWidth: .infinity) @@ -35,6 +36,30 @@ struct FormatterView: View { .cornerRadius(10) } + if !outputText.isEmpty { + VStack(alignment: .leading, spacing: 8) { + HStack { + Text("格式化结果") + .font(.subheadline) + .foregroundStyle(.secondary) + Spacer() + Button(action: copyOutput) { + Image(systemName: "doc.on.doc") + } + } + + TextEditor(text: .constant(outputText)) + .frame(minHeight: 160) + .padding(8) + .background(Color(.systemBackground)) + .cornerRadius(8) + .overlay( + RoundedRectangle(cornerRadius: 8) + .stroke(Color(.systemGray4), lineWidth: 1) + ) + } + } + Spacer() } .padding() @@ -43,27 +68,38 @@ struct FormatterView: View { .onTapGesture { UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil) } - .navigationDestination(item: $resultText) { text in - ResultView(formattedText: text) - } .alert("提示", isPresented: $showEmptyAlert) { Button("确定", role: .cancel) {} } message: { Text("请输入需要格式化的文案") } + .overlay { + if showCopied { + VStack { + Spacer() + Text("已复制") + .font(.subheadline) + .padding(.horizontal, 16) + .padding(.vertical, 8) + .background(Color.black.opacity(0.75)) + .foregroundStyle(.white) + .cornerRadius(20) + .padding(.bottom, 32) + } + .transition(.opacity) + } + } } } - private func formatAndNavigate() { + private func formatText() { if inputText.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty { showEmptyAlert = true + outputText = "" return } - resultText = format(inputText) - } - private func format(_ text: String) -> String { - var content = text + var content = inputText // 去 # content = content.replacingOccurrences(of: "# ", with: "") @@ -93,7 +129,19 @@ struct FormatterView: View { content = content.replacingOccurrences(of: "二、交易方面", with: "## 二、交易方面") content = content.replacingOccurrences(of: "三、工作方面", with: "## 三、工作方面") - return content + outputText = content + } + + private func copyOutput() { + UIPasteboard.general.string = outputText + withAnimation { + showCopied = true + } + DispatchQueue.main.asyncAfter(deadline: .now() + 1.5) { + withAnimation { + showCopied = false + } + } } } diff --git a/Note/ResultView.swift b/Note/ResultView.swift deleted file mode 100644 index 4c2c271..0000000 --- a/Note/ResultView.swift +++ /dev/null @@ -1,83 +0,0 @@ -// -// ResultView.swift -// Note -// -// Created by fish on 2026/7/12. -// - -import SwiftUI - -struct ResultView: View { - let formattedText: String - @Environment(\.dismiss) private var dismiss - @State private var showCopied: Bool = false - - var body: some View { - ScrollView { - VStack(alignment: .leading, spacing: 16) { - Text(formattedText) - .font(.body) - .lineSpacing(4) - .frame(maxWidth: .infinity, alignment: .leading) - .padding() - .background(Color(.systemGray6)) - .cornerRadius(12) - - Button(action: copyText) { - Label("复制结果", systemImage: "doc.on.doc") - .font(.headline) - .frame(maxWidth: .infinity) - .padding() - .background(Color.accentColor) - .foregroundStyle(.white) - .cornerRadius(10) - } - } - .padding() - } - .navigationTitle("格式化结果") - .navigationBarTitleDisplayMode(.inline) - .background(Color(hex: "f2f2f7").ignoresSafeArea()) - .toolbar { - ToolbarItem(placement: .topBarTrailing) { - Button("完成") { - dismiss() - } - } - } - .overlay { - if showCopied { - VStack { - Spacer() - Text("已复制") - .font(.subheadline) - .padding(.horizontal, 16) - .padding(.vertical, 8) - .background(Color.black.opacity(0.75)) - .foregroundStyle(.white) - .cornerRadius(20) - .padding(.bottom, 32) - } - .transition(.opacity) - } - } - } - - private func copyText() { - UIPasteboard.general.string = formattedText - withAnimation { - showCopied = true - } - DispatchQueue.main.asyncAfter(deadline: .now() + 1.5) { - withAnimation { - showCopied = false - } - } - } -} - -#Preview { - NavigationStack { - ResultView(formattedText: "# 示例文本") - } -}