π ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ SwiftUI Ρ Π²Π΅Π±ΠΎΠΌ. Π§Π°ΡΡΡ ΠΏΠ΅ΡΠ²Π°Ρ: WebView
Π ΡΡΠΈΠ½Π½Π°Ρ Π·Π°Π΄Π°ΡΠ°, Π±Π΅Π· ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΡΡΡ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΠ΅ΠΊΡ β Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π°ΡΠΈΠ²Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ iOS ΡΠΎ Π²ΡΠ΅ΠΌΠΈΡΠ½ΠΎΠΉ ΠΏΠ°ΡΡΠΈΠ½ΠΎΠΉ. Π ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΡΠΈΠΊΠ»Π° ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌΡΡ, ΠΊΠ°ΠΊ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² SwiftUI Views. Π‘ΠΠΠΠΠΠ : Π΄Π°Π»ΡΡΠ΅ Π±ΡΠ΄ΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΠ΅ΠΌΡ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² SwiftUI
Π΅ΡΠ΅ Π½Π΅Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° WebView
, ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ WKWebView
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΡΠΏΡΠ°Π²ΠΈΡΡΡ Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ°ΠΉΡΠ°.
Π ΡΡΠΎΠΌ ΡΠΈΠΊΠ»Π΅ ΡΡΠ°ΡΠ΅ΠΉ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ΅ΠΌΡ:
- ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ
WebView
Ρ ΠΏΠΎΠΌΠΎΡΡΡWKWebView
ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°UIViewRepresentable
Π²SwiftUI
. - ΠΠ°Π³ΡΡΠ·ΠΈΡΡ Π²Π΅Π± ΡΠ°ΠΉΡ ΠΈΠ»ΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²
WebView
. - ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½Π°ΡΠΈΠ²Π½ΡΠΌ iOS ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΠ΅Π· ΡΡΠ½ΠΊΡΠΈΠΈ JavaScript.
- ΠΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ (Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ) Π²Π΅Π±-ΡΠ°ΠΉΡΠ° ΠΈΠ»ΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ iOS.
- ΠΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°ΡΡ WebView ΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π²ΠΏΠ΅ΡΠ΅Π΄ ΠΈ Π½Π°Π·Π°Π΄.
- ΠΠ°Π³ΡΡΠΆΠ°ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» .html ΠΈΠ· iOS-ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² WebView
ΠΡΠΎΠ΅ΠΊΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π½Π° Github. ΠΠΎΠ±Π°Π²Π»ΡΠΉΡΠ΅ Π΅Π³ΠΎ Π² Π·Π°ΠΊΠ»Π°Π΄ΠΊΠΈ, ΡΡΠΎΠ±Ρ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ. Π¨Π°Π³ Π·Π° ΡΠ°Π³ΠΎΠΌ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ. ΠΠΎΠΌΠΌΠΈΡΡ ΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌ Π² ΡΡΠ°ΡΡΠ΅, Π² ΠΊΠΎΡΠΎΡΡΡ
ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π°.
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ²ΠΎΠΉ WebView
ΠΠ°ΡΡ ΡΠ»ΠΎΠ² ΠΎ UIViewRepresentable
ΠΡΠΎΡΠΎΠΊΠΎΠ» UIViewRepresentable
β ΡΡΠΎ ΠΎΠ±Π΅ΡΡΠΊΠ° Π΄Π»Ρ UIKit View
, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΡ View
ΠΈΠ· UIKit
.
ΠΡΠΎΡΠ΅ΡΡ Π°Π΄Π°ΠΏΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΡΡ ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅ΡΡΡΠ΅ ΡΠ°Π³Π°:
- Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΡΡΡΠΊΡΡΡΡ ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»
UIViewRepresentable
. - ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π΄Π»Ρ ΡΠ²ΠΎΠ΅ΠΉ
View
ΠΈ Ρ.ΠΏ. - Π ΡΡΠ½ΠΊΡΠΈΠΈ
makeUIView()
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ Π»ΡΠ±ΠΎΠΉUIView
ΠΎΠ±ΡΠ΅ΠΊΡ. - Π ΡΡΠ½ΠΊΡΠΈΠΈ
updateUIView()
ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌView
.
ΠΠΎΡ ΠΈ Π²ΡΠ΅, ΡΠ΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉ View
Π² SwiftUI
.
ΠΠΎΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΊΠ΅Π»Π΅Ρ ΠΎΠ±Π΅ΡΡΠΊΠΈ:
Π’Π°ΠΊΠΆΠ΅, Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ UIKit
ΠΈ SwiftUI View
Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠ»Π°ΡΡ Coordinator
.
struct WebView
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΡΡΡΠΊΡΡΡΡ WebView
, Π½ΠΎ ΠΏΡΠ΅ΠΆΠ΄Π΅ ΠΏΡΠΎΠ²Π΅Π΄Π΅ΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΡ:
- ΠΠ°Π΄Π°Π΄ΠΈΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²Π΅Π±-Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ (Π²ΠΏΠ΅ΡΠ΅Π΄, Π½Π°Π·Π°Π΄ ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ°).
- ΠΠΏΠΈΡΠ΅ΠΌ ΡΠΈΠΏΡ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΡ URL (Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ», ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ).
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΎΠ΅ΠΊΡ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΈ, ΠΌΡ ΡΡΠ°Π·Ρ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π³ΡΡΠΏΠΏΡ Web
ΠΈ Π±ΡΠ΄Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΡΠ΄Π° Π²ΡΠ΅ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ΅ Ρ Π²Π΅Π±ΠΎΠΌ. Π― ΡΠΎΠ·Π΄Π°Π» Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ».
ΠΠΎΠ±Π°Π²ΠΈΠΌ WebView
Π² ContentView
ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ ΡΠΈΠΊΠ»Π° ΠΌΡ Π½Π°ΡΡΠΈΠΌ WebView
Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΎ SwiftUI
ΠΈ Π½Π°ΠΏΠΈΡΠ΅ΠΌ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ Π²Π΅Π±-Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ, Π° Π² ΡΡΠ΅ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ Ρ JavaScript.
Happy code!
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ: