본문 바로가기
프로그래밍

[iOS, Swift] 웹뷰 전체화면 표시

by hansoo.labs 한수댁 2020. 1. 8.

Making WKWebView is fullscreen

iOS의 웹뷰 (WKWebView)를 전체 화면으로 표시하려면, 웹뷰 클래스를 상속받아 safeAreaInsets를 변경해주어야 한다. 내용을 불러오기 전에 전체화면으로 적용하면 깔끔하지만, 내용이 로드된 이후에도 safeAreaInsets를 변경하고 레이아웃을 다시 그리도록 하면(setNeedsLayout) 언제든 변경할 수 있다.

예시로 요로케,,

class CommonWebView: WKWebView {

    private var _isFull = false
    var isFullscreen: Bool {
        set {
            if _isFull != newValue {
                setNeedsLayout()
            }
            _isFull = newValue
        }
        get {
            return _isFull
        }
    }

    override var safeAreaInsets: UIEdgeInsets {
        if isFullscreen {
            let safe = super.safeAreaInsets
            // 상단만 안전영역을 없이 풀로 채우도록 했다.
            return UIEdgeInsets(top: 0, left: safe.left, bottom: safe.bottom, right: safe.right)
        }
        return super.safeAreaInsets
    }
}

댓글0