From 12849d98e78c26184414d46ee59912e8468f2b39 Mon Sep 17 00:00:00 2001 From: Sami Samhuri Date: Sun, 5 Feb 2023 13:39:12 -0800 Subject: [PATCH] Make room for the keyboard --- .../xcschemes/MemoryTree.xcscheme | 78 +++++++++++++++++ MemoryTree/ContentView.swift | 87 +++++++++++-------- 2 files changed, 129 insertions(+), 36 deletions(-) create mode 100644 MemoryTree.xcodeproj/xcshareddata/xcschemes/MemoryTree.xcscheme diff --git a/MemoryTree.xcodeproj/xcshareddata/xcschemes/MemoryTree.xcscheme b/MemoryTree.xcodeproj/xcshareddata/xcschemes/MemoryTree.xcscheme new file mode 100644 index 0000000..7fe329a --- /dev/null +++ b/MemoryTree.xcodeproj/xcshareddata/xcschemes/MemoryTree.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MemoryTree/ContentView.swift b/MemoryTree/ContentView.swift index b3df8f6..0baec7d 100644 --- a/MemoryTree/ContentView.swift +++ b/MemoryTree/ContentView.swift @@ -55,51 +55,66 @@ struct ContentView: View { var body: some View { NavigationStack { VStack(spacing: 0) { - NavigationLink(destination: CloudView(entries: $entries)) { - Image(systemName: "wind.snow") - .imageScale(.large) - .foregroundColor(.white) - } - .padding() - .frame(maxWidth: .infinity, alignment: .trailing) - .opacity(entries.isEmpty ? 0 : 1) + windButton Spacer() - Button { - isEditing = true - } label: { - Image(treeImageName) - .renderingMode(.template) - .resizable() - .scaledToFit() - .foregroundColor(.white) - } - .frame(maxHeight: treeHeight) + treeView - Color.green - .frame(height: 80) - - Form { - TextField("What are you grateful for today?", text: $entryText) - .background(Color.white) - .tint(Color.blue) - } - .onSubmit { -// Task { -// try await $entries.insert(Entry(text: entryText)) -// } - entries.append(Entry(text: entryText)) - entryText = "" - isEditing = false - } - .frame(maxHeight: isEditing ? 120 : 0) + formView } .frame(maxWidth: .infinity, maxHeight: .infinity) - .edgesIgnoringSafeArea(.bottom) + .edgesIgnoringSafeArea(isEditing ? .top : .bottom) .background(Color.blue) } } + + @ViewBuilder var windButton: some View { + NavigationLink(destination: CloudView(entries: $entries)) { + Image(systemName: "wind.snow") + .imageScale(.large) + .foregroundColor(.white) + } + .padding() + .frame(maxWidth: .infinity, alignment: .trailing) + .opacity(entries.isEmpty ? 0 : 1) + } + + @ViewBuilder var treeView: some View { + Button { + isEditing.toggle() + } label: { + Image(treeImageName) + .renderingMode(.template) + .resizable() + .scaledToFit() + .foregroundColor(.white) + } + .frame(maxHeight: treeHeight) + + Color.green + .frame(height: 80) + } + + @ViewBuilder var formView: some View { + Form { + TextField("What are you grateful for today?", text: $entryText) + .background(Color.white) + .tint(Color.blue) + } + .onSubmit { + // Task { + // try await $entries.insert(Entry(text: entryText)) + // } + if !entryText.isEmpty { + entries.append(Entry(text: entryText)) + } + entryText = "" + isEditing = false + } + .frame(maxHeight: isEditing ? 120 : 0) + .animation(.easeInOut.speed(2), value: isEditing) + } } struct ContentView_Previews: PreviewProvider {