티스토리 뷰

iOS/Apple Document

UIWebView와 WKWebView

Giraff 2018. 3. 25. 18:22

iOS 기반의 어플리케이션 내에서 웹 기반 컨텐츠를 제공하려면 UIWebView 또는 WKWebView를 사용해야 한다. (iOS 8.0이상의 경우 WKWebView  사용 권장) 두 개의 View는 어떻게 동작하는지, 또 어떤 차이점이 있는지 알아보았다.



UIWebView

  어플리케이션 내에서 웹 기반 컨텐츠를 보여주기 위해 사용되는 View이며, iOS 2.0 이상부터 사용할 수 있다.


 - loadHTMLString(_:baseURL:) 메서드를 사용하여 로컬의 HTML 파일을, 혹은  loadRequest(_:) 메서드를 사용하여 웹 컨텐츠 로딩을 시작한다.


 - stopLoading( ) 메서드를 사용하여 로딩을 중지할 수 있으며, isLoading 프로퍼티를 통해 웹 뷰의 로딩 상태를 확인 할 수 있다.

 

 - canGoBack   canGoForward 프로퍼티를 통해 웹 페이지 히스토리를 이동 시킬 수 있는지 확인 할 수 있으며, goBack() 과 goForward( )를 통해 웹 페이지 히스토리를 앞, 뒤로 이동시킬 수 있다.


 - 기본적으로 웹 컨텐츠 상의 전화번호를 Phone 링크로 변환 시켜주며, 탭 시 Phone 앱이 실행되며, 전화번호를 나타내어 준다. (Disable 하고 싶을 경우, dataDetectorTypes 프로퍼티에서 phoneNumber를 제외하면 된다.)


 - scalesPageToFit 프로퍼티를 통해 사용자가 제스처를 사용하여 줌 인 / 줌 아웃을 할 수 있도록 설정 할 수 있다. (기본적으로 false 상태)


 - UIWebViewDelegate 를 사용하여 웹 컨텐츠의 로딩을 추적 할 수 있다.



WKWebView

  UIWebView와 마찬가지로, 어플리케이션 내에서 웹 기반 컨텐츠를 보여주기 위해 사용되는 View이며 iOS 8.0 이상부터 사용할 수 있다.


  - WKWebView 객체를 생성하기 위해서 WKWebViewConfiguration을 초기화해주어야 한다.

  

  * WKWebViewConfiguration는 웹 페이지의 렌더링 속도, 미디어 재생 처리 방법, 사용자가 선택할 수 있는 항목 및 기타 여러 옵션을 결정 할 수 있다. (주의할 점은, WKWebView의 이니셜라이저 init(frame:configuration:)를 통해 초기화한 이후엔 수정할 수 없다.)


 - loadHTMLString(_:baseURL:) 메서드를 사용하여 로컬의 HTML 파일을, 혹은  loadRequest(_:) 메서드를 사용하여 웹 컨텐츠 로딩을 시작한다.


 - stopLoading( ) 메서드를 사용하여 로딩을 중지할 수 있으며, isLoading 프로퍼티를 통해 웹 뷰의 로딩 상태를 확인 할 수 있다.


 - canGoBack   canGoForward 프로퍼티를 통해 웹 페이지 히스토리를 이동 시킬 수 있는지 확인 할 수 있으며, goBack() 과 goForward( )를 통해 웹 페이지 히스토리를 앞, 뒤로 이동시킬 수 있다.


 - 기본적으로 웹 컨텐츠 상의 전화번호를 Phone 링크로 변환 시켜주며, 탭 시 Phone 앱이 실행되며, 전화번호를 나타내어 준다. (Disable 하고 싶을 경우, dataDetectorTypes 프로퍼티에서 phoneNumber를 제외하면 된다.)


 - allowsMagnification 프로퍼티를 통해 사용자가 제스처를 사용하여 줌 인 / 줌 아웃을 할 수 있도록 설정 할 수 있다. (기본적으로 false 상태)


 - WKUIDelegate 를 사용하여 웹 페이지 대신 네이티브 UI를 제공 할 수 있다. 


 - WKNavigationDelegate 를 사용하여 웹 컨텐츠의 로딩을 추적 할 수 있다.


 

무엇이 더 다를까?


  - UIWebView는  UIKit Framework를, WKWebView는 WebKit Framework 사용한다. (import 해야한다)


  - WKWebView의 렌더링 성능은 UIWebView의 두 배!


  - WKWebView는 앱의 프로세스와 분리되어 구동된다. 따라서 UIWebView보다 웹 페이지 로딩이 더 빠르고, 메모리 오버헤드가 더 적다!

  


참고 URL

https://developer.apple.com/documentation/uikit/uiwebview

https://developer.apple.com/documentation/webkit/wkwebview

https://www.hackingwithswift.com/example-code/wkwebview/whats-the-difference-between-uiwebview-and-wkwebview

http://findnerd.com/list/view/Major-Feature-Difference-Between-UIWebView-and-WKWebView/34217/

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함