WKWebView

인 앱 브라우저와 같이 인터렉티브 웹 컨텐츠를 표시하는 객체

원문 출처 https://developer.apple.com/documentation/webkit/wkwebview

Summary

SDKs

  • iOS 8.0+

  • macOS 10.10+

Framework

  • WebKit

Declaration

iOS, Mac Catalyst
class WKWebView : UIView
macOS
class WKWebView : NSView

개요

Important

iOS 8.0과 OS X 10.10부터는 웹 컨텐츠를 앱에 추가할 때 WKWebView를 사용해야 합니다. UIWebView나 WebView를 사용하지 마세요.

WKWebView 클래스를 사용하면 웹 컨텐츠를 앱에 내장시킬 수 있습니다. WKWebView 클래스를 사용하기 위해서는 WKWebView 객체를 생성하고 뷰로써 설정한 다음 웹 컨텐츠를 불러오기 위해서 요청을 보내야 합니다.

Note

WKWebView 안에서 httpBody 컨텐츠로 POST 요청을 할 수 있습니다.

init(frame:configuration:) 메서드로 새 WKWebView 객체를 생성한 후에는 웹 컨텐츠를 로딩해야 합니다. loadHTMLString(_:baseURL:) 메서드는 로컬 HTML파일을, load(_:) 메서드로는 웹 컨텐츠의 로드를 시작할 수 있습니다. stopLoading() 메서드는 로딩을 멈추게 할 수 있으며 isLoading 프로퍼티는 웹 뷰가 로딩중인지를 알 수 있습니다. WKUIDelegate 프로토콜을 준수하는 객체를 delegate 프로퍼티로 지정하여 웹 컨텐츠의 로딩을 추적할 수 있습니다. Listing 1에서 WKWebView를 프로그래밍적으로 생성하는 예시를 확인하세요.

Listing 1. 프로그래밍적으로 WKWebView 생성
import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate {
    
    var webView: WKWebView!
    
    override func loadView() {
        let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.uiDelegate = self
        view = webView
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let myURL = URL(string:"https://www.apple.com")
        let myRequest = URLRequest(url: myURL!)
        webView.load(myRequest)
    }}

사용자가 웹페이지 기록의 앞이나 뒤로 이동할 수 있게 하려면 goBack()goForward() 메서드를 버튼의 액션으로 지정하세요. canGoBackcanGoForward 프로퍼티는 사용자가 해당 방향으로 이동하지 못하게 할 수 있습니다.

기본적으로 웹 뷰는 웹 컨텐츠 상의 전화번호를 전화 링크로 자동변환합니다. 전화 링크를 터치하면 전화 앱이 실행되고 전화번호가 입력됩니다. 이 기본동작을 끄려면 WKDataDetectorTypePhoneNumber 플래그가 없는 WKDataDetectorTypes 비트필드를 사용해서 dataDetectorTypes 프로퍼티를 설정하세요.

setMagnification(_:centeredAt:)을 사용해서 웹 뷰가 처음 웹 컨텐츠를 표시할 때 표시 스케일을 설정할 수 있습니다. 따라서 사용자는 제스처를 통해 스케일을 조절할 수 있습니다.

주제

Determining Whether WebKit can Load Content

  • class func handlesURLScheme(String) -> Bool 리소스를 로딩하는 특정 URL 스키마에 대한 WebKit의 네이티브 지원 여부를 반환합니다.

웹 뷰 초기화

  • var configuration: WKWebViewConfiguration

    웹 뷰를 초기화하기 위한 설정의 복사본

  • init(frame: CGRect, configuration: WKWebViewConfiguration) 지정된 프레임과 설정으로 초기화된 웹 뷰를 반환합니다.

  • init?(coder: NSCoder)

뷰 정보 검사

  • var scrollView: UIScrollView 웹 뷰에 연결된 스크롤 뷰

  • var title: String? 페이지 제목

  • var url: URL?

    활성 URL

  • var customUserAgent: String?

    커스텀 User agent 문자열

  • var serverTrust: SecTrust? 현재 커밋된 탐색에 대한 SecTrustRef 객체

  • var certificateChain: [Any] Deprecated

    An array of objects forming the certificate chain for the currently committed navigation.

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: CGFloat

    The factor by which the page content is currently scaled.

  • func setMagnification(CGFloat, centeredAt: CGPoint)

    지정된 값에 따라서 페이지 컨텐츠를 확대하고 중심점을 맞춥니다.

  • 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) 뷰에서 보여지고 있는 뷰포트의 스크린샷을 찍습니다.

관련 문서

상속

  • NSView

  • UIView

준수하는 프로토콜

  • CVarArg

  • Equatable Hashable

  • NSStandardKeyBindingResponding

  • NSTouchBarProvider

  • NSUserActivityRestoring

  • NSUserInterfaceValidations

  • UIAccessibilityIdentification

  • UILargeContentViewerItem

  • UIPasteConfigurationSupporting

  • UIUserActivityRestoring

같이 보기

초기화

  • protocol WKNavigationDelegate WKNavigationDelegate 프로토콜 메서드는 웹 뷰 네비게이션 요청의 수락, 로딩, 완료 중에 트리거되는 커스텀 동작의 구현을 돕습니다.

  • class WKProcessPool WKProcessPool 객체는 웹 컨텐츠 프로세스 풀을 나타냅니다.

  • class WKWindowFeatures WKWindowFeatures 객체는 새 웹 뷰를 요청할때 포함된 창에 대한 옵셔널 속성을 지정합니다.

  • class WKWebViewConfiguration 웹 뷰를 초기화하는데 사용되는 프로퍼티 콜렉션

  • class WKPreferences WKPreferences 객체는 웹 뷰에 대한 기본 설정을 캡슐화합니다.

  • class WKWebpagePreferences Beta

  • protocol WKUIDelegate WKUIDelegate 클래스는 웹 페이지를 대신하여 네이티브 유저 인터페이스 요소를 표시하는 메서드를 제공합니다.

  • 웹 뷰를 사용하여 데스크탑이나 모바일 웹 컨텐츠 보기 웹 사이트의 데스크톱 또는 모바일 버전을 볼 수있는 간단한 iPad 웹 브라우저를 구현하세요.

Last updated