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함수를 호출하면 됩니다.
'프로그래밍 > 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 |