티스토리 뷰
iOS 기반의 어플리케이션 내에서 웹 기반 컨텐츠를 제공하려면 UIWebView 또는 WKWebView를 사용해야 한다. (iOS 8.0이상의 경우 WKWebView 사용 권장) 두 개의 View는 어떻게 동작하는지, 또 어떤 차이점이 있는지 알아보았다.
UIWebView
어플리케이션 내에서 웹 기반 컨텐츠를 보여주기 위해 사용되는 View이며, iOS 2.0 이상부터 사용할 수 있다.
- loadload
메서드를 사용하여 웹 컨텐츠 로딩을 시작한다.
- stop
메서드를 사용하여 로딩을 중지할 수 있으며, is
-
can
can
프로퍼티를 통해 웹 페이지 히스토리를 이동 시킬 수 있는지 확인 할 수 있으며, go
과 go
를 통해 웹 페이지 히스토리를 앞, 뒤로 이동시킬 수 있다.
- 기본적으로 웹 컨텐츠 상의 전화번호를 Phone 링크로 변환 시켜주며, 탭 시 Phone 앱이 실행되며, 전화번호를 나타내어 준다. (Disable 하고 싶을 경우, data
프로퍼티에서 phone
를 제외하면 된다.)
- scales
프로퍼티를 통해 사용자가 제스처를 사용하여 줌 인 / 줌 아웃을 할 수 있도록 설정 할 수 있다. (기본적으로 false 상태)
- UIWeb
를 사용하여 웹 컨텐츠의 로딩을 추적 할 수 있다.
WKWebView
UIWebView와 마찬가지로, 어플리케이션 내에서 웹 기반 컨텐츠를 보여주기 위해 사용되는 View이며 iOS 8.0 이상부터 사용할 수 있다.
- WKWebView 객체를 생성하기 위해서 WKWebViewConfiguration을 초기화해주어야 한다.
* WKWebViewConfiguration는 웹 페이지의 렌더링 속도, 미디어 재생 처리 방법, 사용자가 선택할 수 있는 항목 및 기타 여러 옵션을 결정 할 수 있다. (주의할 점은, WKWebView의 이니셜라이저 init(frame:
를 통해 초기화한 이후엔 수정할 수 없다.)
- loadload
메서드를 사용하여 웹 컨텐츠 로딩을 시작한다.
- stop
메서드를 사용하여 로딩을 중지할 수 있으며, is
-
can
can
프로퍼티를 통해 웹 페이지 히스토리를 이동 시킬 수 있는지 확인 할 수 있으며, go
과 go
를 통해 웹 페이지 히스토리를 앞, 뒤로 이동시킬 수 있다.
- 기본적으로 웹 컨텐츠 상의 전화번호를 Phone 링크로 변환 시켜주며, 탭 시 Phone 앱이 실행되며, 전화번호를 나타내어 준다. (Disable 하고 싶을 경우, data
프로퍼티에서 phone
를 제외하면 된다.)
- 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
http://findnerd.com/list/view/Major-Feature-Difference-Between-UIWebView-and-WKWebView/34217/
'iOS > Apple Document' 카테고리의 다른 글
Understanding Event Handling, Responders, and the Responder Chain (1) | 2017.12.23 |
---|