728x90
반응형

webView.load() 만 실행한다고 해서 WebView 구성이 끝일까요?


사용자는 이 화면이 아직 조회되고 있는지 알아야 합니다.


화면이 오류로 멈춰있는데 언제까지 기다릴수도 없는일 입니다.






iOS에서는 화면의 로딩 중이라는것을 보여주도록 UIActivityIndicatorView를 지원하고 있습니다.





Indicator를 구성하여 웹뷰를 완성해보겠습니다.


    @IBOutlet weak var indicator: UIActivityIndicatorView!
cs


Storyboard에서 Indicator뷰를 생성하고 IBOutlet 변수로 정의합니다.





그리고 WKWebView가 로딩을 시작할 때와, 로딩이 끝날때, 오류일때를 각 함수를 호출해주는 Delegate를 준수하면됩니다.


    webView.navigationDelegate = self
cs


extension MainViewController: WKNavigationDelegate {
 
    // 로드 시작
    func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: KNavigation!) {
    
    }
 
    // 로드 종료
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
 
    }
 
    // 로드 오류
    func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
        
    }
}
cs


extension이라는 확장 키워드를 통해 WKNavigationDelegate 를 구현하는 함수를 따로 나눠 작성했습니다.


webview의 navigationDelegate를 나 자신으로 정하면 특정 행동을 취했을때 구현한 함수를 호출해줍니다.


WKNavigationDelegate를 준수하면 웹뷰의 많은 콜백 함수들을 사용할 수 있지만 몇가지만 구현해 보았습니다.






Activity Indicator View -> Behavior 


Animating 을 체크하면 indicator가 움직이게 된됩니다.


Hides When Stopped 를 체크하면 indicator가 멈출때 화면에서 감춰줍니다.







indicator.startAnimating()    // indicator가 움직인다.

indicator.stopAnimating()    // indicator가 멈춘다.


필요에 맞게 indicator함수를 호출하면 됩니다.

728x90
반응형

'프로그래밍 > iOS' 카테고리의 다른 글

Swift 4 TableViewCell SwipeAction  (0) 2019.02.21
Swift 4 TextView PlaceHolder  (0) 2019.02.21
Swift 4 WKWebView  (0) 2019.02.20
Swift 4 TableView 이미지 비동기 처리  (0) 2019.02.20
Swift 4 TableView 이미지 메모이제이션 기법  (0) 2019.02.20

+ Recent posts