diff --git a/SwiftUITalk.xcodeproj/project.pbxproj b/SwiftUITalk.xcodeproj/project.pbxproj index 79d8281..929b9be 100644 --- a/SwiftUITalk.xcodeproj/project.pbxproj +++ b/SwiftUITalk.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + F6C915F023699C9500C7E4C8 /* DragRectangleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6C915EF23699C9500C7E4C8 /* DragRectangleView.swift */; }; F6D5673F234E340500D0417B /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6D5673E234E340500D0417B /* AppDelegate.swift */; }; F6D56741234E340500D0417B /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6D56740234E340500D0417B /* SceneDelegate.swift */; }; F6D56743234E340500D0417B /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6D56742234E340500D0417B /* LoginView.swift */; }; @@ -22,11 +23,10 @@ F6E31D7E234F43D500EA19C4 /* PostDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6E31D7D234F43D500EA19C4 /* PostDetailView.swift */; }; F6E31D82234F4BB000EA19C4 /* Post+Decodable.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6E31D81234F4BB000EA19C4 /* Post+Decodable.swift */; }; F6E31D84234F4BCA00EA19C4 /* Author.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6E31D83234F4BCA00EA19C4 /* Author.swift */; }; - F6E31D86234F527B00EA19C4 /* AuthorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6E31D85234F527B00EA19C4 /* AuthorView.swift */; }; - F6E31D88234F58B500EA19C4 /* AuthorsGridView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6E31D87234F58B500EA19C4 /* AuthorsGridView.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + F6C915EF23699C9500C7E4C8 /* DragRectangleView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DragRectangleView.swift; sourceTree = ""; }; F6D5673B234E340500D0417B /* SwiftUITalk.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwiftUITalk.app; sourceTree = BUILT_PRODUCTS_DIR; }; F6D5673E234E340500D0417B /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; F6D56740234E340500D0417B /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; @@ -44,8 +44,6 @@ F6E31D7D234F43D500EA19C4 /* PostDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostDetailView.swift; sourceTree = ""; }; F6E31D81234F4BB000EA19C4 /* Post+Decodable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Post+Decodable.swift"; sourceTree = ""; }; F6E31D83234F4BCA00EA19C4 /* Author.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Author.swift; sourceTree = ""; }; - F6E31D85234F527B00EA19C4 /* AuthorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorView.swift; sourceTree = ""; }; - F6E31D87234F58B500EA19C4 /* AuthorsGridView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorsGridView.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -108,9 +106,8 @@ F6D56742234E340500D0417B /* LoginView.swift */, F6D56754234F1B9F00D0417B /* BlogListView.swift */, F6E31D7D234F43D500EA19C4 /* PostDetailView.swift */, - F6E31D85234F527B00EA19C4 /* AuthorView.swift */, F6E31D7B234F41EA00EA19C4 /* WebView.swift */, - F6E31D87234F58B500EA19C4 /* AuthorsGridView.swift */, + F6C915EF23699C9500C7E4C8 /* DragRectangleView.swift */, ); path = Views; sourceTree = ""; @@ -214,11 +211,10 @@ buildActionMask = 2147483647; files = ( F6E31D7E234F43D500EA19C4 /* PostDetailView.swift in Sources */, - F6E31D88234F58B500EA19C4 /* AuthorsGridView.swift in Sources */, + F6C915F023699C9500C7E4C8 /* DragRectangleView.swift in Sources */, F6D56755234F1B9F00D0417B /* BlogListView.swift in Sources */, F6E31D7C234F41EA00EA19C4 /* WebView.swift in Sources */, F6D5675B234F1C4200D0417B /* DataService.swift in Sources */, - F6E31D86234F527B00EA19C4 /* AuthorView.swift in Sources */, F6D5673F234E340500D0417B /* AppDelegate.swift in Sources */, F6E31D84234F4BCA00EA19C4 /* Author.swift in Sources */, F6E31D82234F4BB000EA19C4 /* Post+Decodable.swift in Sources */, diff --git a/SwiftUITalk/Views/AuthorView.swift b/SwiftUITalk/Views/AuthorView.swift deleted file mode 100644 index f276c59..0000000 --- a/SwiftUITalk/Views/AuthorView.swift +++ /dev/null @@ -1,37 +0,0 @@ -// -// AuthorView.swift -// SwiftUITalk -// -// Created by Stefan Kofler on 10.10.19. -// Copyright © 2019 QuickBird Studios GmbH. All rights reserved. -// - -import SwiftUI - -struct AuthorView: View { - let author: Author - - var body: some View { - VStack(spacing: 24) { - Image(uiImage: author.image) - .resizable() - .scaledToFit() - .mask(Circle()) - .shadow(radius: 12) - - Text(author.name) - .font(.title) - - Text(author.longDescription) - .font(.caption) - .multilineTextAlignment(.center) - } - .padding(.horizontal, 32) - } -} - -struct AuthorView_Previews: PreviewProvider { - static var previews: some View { - AuthorView(author: DataService().getDistinctAuthors()[0]) - } -} diff --git a/SwiftUITalk/Views/AuthorsGridView.swift b/SwiftUITalk/Views/AuthorsGridView.swift deleted file mode 100644 index 8775793..0000000 --- a/SwiftUITalk/Views/AuthorsGridView.swift +++ /dev/null @@ -1,49 +0,0 @@ -// -// AuthorsGridView.swift -// SwiftUITalk -// -// Created by Stefan Kofler on 10.10.19. -// Copyright © 2019 QuickBird Studios GmbH. All rights reserved. -// - -import SwiftUI -import UIKit - -struct AuthorsGridView: View { - let authors: [Author] - - @State var isDragging: Bool = false - @State var dragOffset: CGSize = .zero - - var body: some View { - ZStack(alignment: .bottom) { - ForEach(0 ..< self.authors.count) { index in - AuthorCardView(author: self.authors[index]) - } - } - } -} - -struct AuthorCardView: View { - let author: Author - - var body: some View { - Image(uiImage: author.image) - .resizable() - .scaledToFit() - .frame(width: 200) - .mask(RoundedRectangle(cornerRadius: 20)) - .shadow(radius: 8) - } - -} - -struct AuthorsGridView_Previews: PreviewProvider { - static var previews: some View { - let authors = DataService().getPosts().map { $0.author } - let distinctAuthors = Array(Set(authors)) - .filter { $0.id != 10 } - .sorted(by: { $0.id > $1.id }) - return AuthorsGridView(authors: distinctAuthors) - } -} diff --git a/SwiftUITalk/Views/DragRectangleView.swift b/SwiftUITalk/Views/DragRectangleView.swift new file mode 100644 index 0000000..4630a72 --- /dev/null +++ b/SwiftUITalk/Views/DragRectangleView.swift @@ -0,0 +1,36 @@ +// +// DragRectangle.swift +// SwiftUITalk +// +// Created by Stefan Kofler on 30.10.19. +// Copyright © 2019 QuickBird Studios GmbH. All rights reserved. +// + +import SwiftUI + +struct DragRectangleView: View { + + @State private var translation: CGSize = .zero + @State private var isDragging = false + + var body: some View { + BockView() + } + +} + +struct BockView: View { + + var body: some View { + Rectangle() + .cornerRadius(16) + .frame(width: 100, height: 100) + } + +} + +struct ExerciseView_Previews: PreviewProvider { + static var previews: some View { + DragRectangleView() + } +}