Monti

swift) webview-1 ๋ณธ๋ฌธ

IOS/Swift

swift) webview-1

montt 2022. 10. 8. 10:38

๐ŸŒ

WebView ์‚ฌ์šฉํ•˜๊ธฐ

 

WKWebView (๊ณต์‹๋ฌธ์„œ ๋งํฌ)

์ธ์•ฑ ๋ธŒ๋ผ์šฐ์ €์™€ ๊ฐ™์ด ์ธํ„ฐ๋ ‰ํ‹ฐ๋ธŒ ์›น ์ปจํ…์ธ ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฐ์ฒด


์„ ์–ธ

// iOS, iPadOS, ๋งฅ ์นดํƒˆ๋ฆฌ์ŠคํŠธ
class WKWebView: UIView

 

๊ฐœ์š”

WKWebkView๋Š” ์›น ์ปจํ…์ธ ๋ฅผ ์•ฑ์— ๋‚ด์žฅ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ ๊ธฐ๋ฐ˜ View ์ด๋‹ค. WebView๋Š” ์™„์ „ํ•œ ์›น ๋ธŒ๋ผ์šฐ์ง• ๊ฒฝํ—˜์„ ์ง€์›ํ•˜๊ณ  HTML, CSS ๋ฐ JavaScript ์ฝ˜ํ…์ธ ๋ฅผ ํ‘œ์‹œํ•ด์ค€๋‹ค. WKWebView ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” WKWebView ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ทฐ๋กœ์จ ์„ค์ •ํ•œ ๋‹ค์Œ ์›น ์ปจํ…์ธ ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด ์š”์ฒญ์„ ๋ณด๋‚ด์•ผ ํ•œ๋‹ค.

๐Ÿ’ก
์ค‘์š” iOS 8.0, macOS 10.10 ์ด์ƒ์—์„œ๋Š” WKWebView๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

์›น ๋ทฐ ์ดˆ๊ธฐํ™”

  • var configuration: WKWebViewConfiguration์›น ๋ทฐ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ ์œ„ํ•œ ์„ค์ •์˜ ๋ณต์‚ฌ๋ณธ
  • init(frame: CGRect, configuration: WKWebViewConfiguration) ์ง€์ •๋œ ํ”„๋ ˆ์ž„๊ณผ ์„ค์ •์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ ์›น ๋ทฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋ทฐ ์ •๋ณด ๊ฒ€์‚ฌ

  • var scrollView: UIScrollView ์›น ๋ทฐ์— ์—ฐ๊ฒฐ๋œ ์Šคํฌ๋กค ๋ทฐ
  • var title: String? ํŽ˜์ด์ง€ ์ œ๋ชฉ
  • var url: URL?ํ™œ์„ฑ URL
  • var customUserAgent: String?์ปค์Šคํ…€ User agent ๋ฌธ์ž์—ด
  • var serverTrust: SecTrust? ํ˜„์žฌ ์ปค๋ฐ‹๋œ ํƒ์ƒ‰์— ๋Œ€ํ•œ SecTrustRef ๊ฐ์ฒด

Delegate ์„ค์ •

  • var navigationDelegate: WKNavigationDelegate?์›น ๋ทฐ์˜ ๋„ค๋น„๊ฒŒ์ด์…˜ delegate
  • var uiDelegate: WKUIDelegate? ์›น ๋ทฐ์˜ ์œ ์ € ์ธํ„ฐํŽ˜์ด์Šค delegate

์ปจํ…์ธ  ๋กœ๋”ฉ

  • var estimatedProgress: Doubleํ˜„์žฌ ๋„ค๋น„๊ฒŒ์ด์…˜์˜ ๋กœ๋“œ๋Ÿ‰์„ ์ถ”์ •ํ•ฉ๋‹ˆ๋‹ค.
  • var hasOnlySecureContent: Bool ํŽ˜์ด์ง€์˜ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๊ฐ€ ์•ˆ์ „ํ•˜๊ฒŒ ์•”ํ˜ธํ™”๋œ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด์„œ ๋กœ๋“œ๋œ ๊ฒƒ์ธ์ง€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • func loadHTMLString(String, baseURL: URL?) -> WKNavigation? ์›นํŽ˜์ด์ง€ ๋‚ด์šฉ๊ณผ base URL์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • var isLoading: Bool ๋ทฐ๊ฐ€ ํ˜„์žฌ ์ปจํ…์ธ ๋ฅผ ๋กœ๋”ฉ ์ค‘์ธ์ง€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • func reload() -> WKNavigation? ํ˜„์žฌ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•ฉ๋‹ˆ๋‹ค.
  • func reload(Any?) ํ˜„์žฌ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•ฉ๋‹ˆ๋‹ค.
  • func reloadFromOrigin() -> WKNavigation? (๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด) ์บ์‹œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜์—ฌ ์ข…๋‹จ๊ฐ„ ์žฌ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ํ˜„์žฌ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๊ณ ์นจํ•ฉ๋‹ˆ๋‹ค.
  • func reloadFromOrigin(Any?)(๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด) ์บ์‹œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜์—ฌ ์ข…๋‹จ๊ฐ„ ์žฌ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ํ˜„์žฌ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๊ณ ์นจํ•ฉ๋‹ˆ๋‹ค.
  • func stopLoading()ํ˜„์žฌ ํŽ˜์ด์ง€์˜ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค ๋กœ๋”ฉ์„ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค.
  • func stopLoading(Any?) ํ˜„์žฌ ํŽ˜์ด์ง€์˜ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค ๋กœ๋”ฉ์„ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค.
  • func load(Data, mimeType: String, characterEncodingName: String, baseURL: URL) -> WKNavigation? ์›นํŽ˜์ด์ง€ ์ปจํ…์ธ ์™€ base URL์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • func loadFileURL(URL, allowingReadAccessTo: URL) -> WKNavigation? ํŒŒ์ผ ์‹œ์Šคํ…œ ์ƒ์˜ ์š”์ฒญ๋œ ํŒŒ์ผ URL๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

์ปจํ…์ธ  ์Šค์ผ€์ผ๋ง

  • var allowsMagnification: Boolํ™•๋Œ€ ์ œ์Šค์ฒ˜๋ฅผ ํ†ตํ•œ ์›น ๋ทฐ ํ™•๋Œ€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • var magnification: CGFloatThe factor by which the page content is currently scaled.
  • func setMagnification(CGFloat, centeredAt: CGPoint)์ง€์ •๋œ ๊ฐ’์— ๋”ฐ๋ผ์„œ ํŽ˜์ด์ง€ ์ปจํ…์ธ ๋ฅผ ํ™•๋Œ€ํ•˜๊ณ  ์ค‘์‹ฌ์ ์„ ๋งž์ถฅ๋‹ˆ๋‹ค.

Navigating

  • var allowsBackForwardNavigationGestures: Bool์ˆ˜ํ‰ ์Šค์™€์ดํ”„๋ฅผ ํ†ตํ•œ ์ „ํ›„ ํŽ˜์ด์ง€ ์ด๋™๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • var backForwardList: WKBackForwardList ์›น ๋ทฐ์˜ ์ „ํ›„ ๋ฆฌ์ŠคํŠธ
  • var canGoBack: Bool back-forward ๋ฆฌ์ŠคํŠธ ์ƒ์— ์ด์ „ ํ•ญ๋ชฉ์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ํ•ญ๋ชฉ์œผ๋กœ ์ด๋™์ด ๊ฐ€๋Šฅํ•œ์ง€์— ๋Œ€ํ•œ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • var canGoForward: Bool back-forward ๋ฆฌ์ŠคํŠธ ์ƒ์— ๋‹ค์Œ ํ•ญ๋ชฉ์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ํ•ญ๋ชฉ์œผ๋กœ ์ด๋™์ด ๊ฐ€๋Šฅํ•œ์ง€์— ๋Œ€ํ•œ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • var allowsLinkPreview: Bool ๋งํฌ๋ฅผ ๋ˆŒ๋ €์„๋•Œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์˜ ํ‘œ์‹œ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • func goBack() -> WKNavigation? back-forward ๋ฆฌ์ŠคํŠธ์ƒ์˜ ์ด์ „ ํ•ญ๋ชฉ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  • func goBack(Any?) back-forward ๋ฆฌ์ŠคํŠธ์ƒ์˜ ์ด์ „ ํ•ญ๋ชฉ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  • func goForward() -> WKNavigation? back-forward ๋ฆฌ์ŠคํŠธ์ƒ์˜ ๋‹ค์Œ ํ•ญ๋ชฉ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  • func goForward(Any?) back-forward ๋ฆฌ์ŠคํŠธ์ƒ์˜ ๋‹ค์Œ ํ•ญ๋ชฉ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  • func go(to: WKBackForwardListItem) -> WKNavigation? back-forward ๋ฆฌ์ŠคํŠธ ์ƒ์˜ ํ•ญ๋ชฉ์œผ๋กœ ์ด๋™ํ•˜๊ณ  ํ˜„์žฌ ํ•ญ๋ชฉ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • func load(URLRequest) -> WKNavigation? ์š”์ฒญ URL๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰

  • func evaluateJavaScript(String, completionHandler: ((Any?, Error?) -> Void)?) ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ์ž์—ด์„ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฐ์ƒท ์บก์ฒ˜

  • func takeSnapshot(with: WKSnapshotConfiguration?, completionHandler: (UIImage?, Error?) -> Void) ๋ทฐ์—์„œ ๋ณด์—ฌ์ง€๊ณ  ์žˆ๋Š” ๋ทฐํฌํŠธ์˜ ์Šคํฌ๋ฆฐ์ƒท์„ ์ฐ์Šต๋‹ˆ๋‹ค.

 

์‹ค์Šต


 

 

Comments