From cada2649c286d28e99f835b10af1d41d00e783ac Mon Sep 17 00:00:00 2001 From: unnnyong Date: Fri, 9 Sep 2022 02:19:37 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[Feat]=20WebView=20Representable=20View=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AsyncSwift.xcodeproj/project.pbxproj | 12 ++++++++++++ AsyncSwift/Extensions/WebView.swift | 27 +++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 AsyncSwift/Extensions/WebView.swift diff --git a/AsyncSwift.xcodeproj/project.pbxproj b/AsyncSwift.xcodeproj/project.pbxproj index 49b4686..a568a6e 100644 --- a/AsyncSwift.xcodeproj/project.pbxproj +++ b/AsyncSwift.xcodeproj/project.pbxproj @@ -21,6 +21,7 @@ C6F7798728C9CB3A0036773B /* StampView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6F7798628C9CB3A0036773B /* StampView.swift */; }; C6F7798B28C9CBC60036773B /* EventView+Observed.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6F7798A28C9CBC60036773B /* EventView+Observed.swift */; }; C6F7798D28C9CBD80036773B /* EventResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6F7798C28C9CBD80036773B /* EventResponse.swift */; }; + E9E25D1E28CA554000986387 /* WebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9E25D1D28CA554000986387 /* WebView.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -39,6 +40,7 @@ C6F7798628C9CB3A0036773B /* StampView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StampView.swift; sourceTree = ""; }; C6F7798A28C9CBC60036773B /* EventView+Observed.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "EventView+Observed.swift"; sourceTree = ""; }; C6F7798C28C9CBD80036773B /* EventResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EventResponse.swift; sourceTree = ""; }; + E9E25D1D28CA554000986387 /* WebView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebView.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -77,6 +79,7 @@ C68DE94A28C76CE000CA4CC8 /* Info.plist */, C68DE93528C7685800CA4CC8 /* AsyncSwiftApp.swift */, C68DE94B28C76F3200CA4CC8 /* AppDelegate.swift */, + E9E25D1F28CA554900986387 /* Extensions */, C6F7798828C9CB9B0036773B /* Identifiable */, C68DE95228C77F4800CA4CC8 /* Views */, C6F7798928C9CBA60036773B /* Observed */, @@ -123,6 +126,14 @@ path = Observed; sourceTree = ""; }; + E9E25D1F28CA554900986387 /* Extensions */ = { + isa = PBXGroup; + children = ( + E9E25D1D28CA554000986387 /* WebView.swift */, + ); + path = Extensions; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -202,6 +213,7 @@ buildActionMask = 2147483647; files = ( C68DE94C28C76F3200CA4CC8 /* AppDelegate.swift in Sources */, + E9E25D1E28CA554000986387 /* WebView.swift in Sources */, C68DE95128C77DDA00CA4CC8 /* TicketingView.swift in Sources */, C6F7798B28C9CBC60036773B /* EventView+Observed.swift in Sources */, C6F7798728C9CB3A0036773B /* StampView.swift in Sources */, diff --git a/AsyncSwift/Extensions/WebView.swift b/AsyncSwift/Extensions/WebView.swift new file mode 100644 index 0000000..cd80eaf --- /dev/null +++ b/AsyncSwift/Extensions/WebView.swift @@ -0,0 +1,27 @@ +// +// WebView.swift +// AsyncSwift +// +// Created by Eunyeong Kim on 2022/09/09. +// + +import SwiftUI +import WebKit + +struct WebView: UIViewRepresentable { + + let url: String + + func makeUIView(context: Context) -> WKWebView { + let webView = WKWebView() + webView.scrollView.isScrollEnabled = true + + if let url = URL(string: url) { + webView.load(URLRequest(url: url)) + } + + return webView + } + + func updateUIView(_ uiView: WKWebView, context: Context) {} +} From 57a2fd79a410f5279917e4e2b6162a1acdce5f27 Mon Sep 17 00:00:00 2001 From: unnnyong Date: Fri, 9 Sep 2022 02:21:03 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[Feat]=20Ticket=20=EB=B2=84=ED=8A=BC?= =?UTF-8?q?=EC=9D=84=20=ED=83=AD=ED=95=98=EB=A9=B4=20Ticketing=20=EA=B0=80?= =?UTF-8?q?=EB=8A=A5=ED=95=9C=20WebView=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AsyncSwift/Views/TicketingView.swift | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/AsyncSwift/Views/TicketingView.swift b/AsyncSwift/Views/TicketingView.swift index 469d8e6..b9251ef 100644 --- a/AsyncSwift/Views/TicketingView.swift +++ b/AsyncSwift/Views/TicketingView.swift @@ -8,15 +8,20 @@ import SwiftUI struct TicketingView: View { + private let upcomingEventURL = "https://www.eventbrite.com/e/asyncswift-seminar-002-tickets-408509251167" + var body: some View { NavigationView { ScrollView { VStack(spacing: 30) { - Image("Seminar002Ticket") - .resizable() - .aspectRatio(contentMode: .fit) - .shadow(color: Color(.sRGB, red: 0, green: 0, blue: 0, opacity: 0.15), radius: 20, x: 0, y: 4) - + NavigationLink { + WebView(url: upcomingEventURL) + } label: { + Image("Seminar002Ticket") + .resizable() + .aspectRatio(contentMode: .fit) + .shadow(color: Color(.sRGB, red: 0, green: 0, blue: 0, opacity: 0.15), radius: 20, x: 0, y: 4) + } Image("UpcomingConference001") .resizable() .aspectRatio(contentMode: .fit)