2017-04-20 34 views
2

WebViews가 서로 다른 ViewController에 있지만 각각을로드하는 데 약 3 초가 걸립니다. 사용자가 FirstViewController의 웹 페이지에있을 때 Launch Screen 또는 SecondViewController의 WebView를로드하는 동안 웹 페이지로드를 시작할 수 있습니까?Swift 3, iOS 10.3 - 실행 화면에서 UIWebView 미리로드

import UIKit 

    class dabs: UIViewController { 
     @IBOutlet weak var webView_dabs: UIWebView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     let websiteURL = URL(string: "https://www.skybriefing.com/portal/dabs") 
     let websiteURLRequest = URLRequest(url: websiteURL!) 
     webView_dabs.loadRequest(websiteURLRequest) 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 
} 
+1

아니요. 활동 표시기를 사용하십시오. – Astoria

+0

이 질문을 확인하십시오 http://stackoverflow.com/questions/35803339/how-to-hold-splashscreen-until-process-in-app-delegate-is-over, 아마도 당신은 뭔가 유용한 것을 발견 할 것입니다. –

답변

3

아마도 가장 좋은 방법은보기 컨트롤러의보기 위에 스플래시 화면과 똑같은 임시보기를 배치하는 것입니다.

보기 컨트롤러를 UIWebView에 대한 위임자로 추가하고 webViewDidFinishLoad: 메서드에서 임시보기를 그냥 닫습니다.

이론적으로 사용자는 스플래시 화면이 조금 더 오래 걸렸다 고 생각할 것입니다.

+0

참고 : iOS 7 이하를 지원하지 않는 한 OP는 'UIWebView'가 아닌 [WKWebView] (https://developer.apple.com/reference/webkit/wkwebview)를 사용해야합니다. 함께 제공되는 [WKNavigationDelegate] (https://developer.apple.com/reference/webkit/wknavigationdelegate) 클래스에는 [메소드] (https://developer.apple.com/reference/webkit/wknavigationdelegate/1455629-webview)가 있습니다. 완료시 호출되고 종료시 호출되는 [another] (https://developer.apple.com/reference/webkit/wknavigationdelegate/1455639-webviewwebcontentprocessdidtermi) – sketchyTech

+0

좋은 생각이지만 내 App에 여러 WebView가 있기 때문에 ' T는 일을하고 그것은 사용자를 길게 할 것입니다. –

0

웹보기에서 활동 표시기를 사용하면 웹 사이트가로드 될 때 활동 표시기에 애니메이션이 시작되고 웹 사이트가 완전히로드되면 애니메이션이 중지됩니다.

스토리 보드에서 웹보기 및 활동 표시기를 추가하십시오.

이제이 파일을 신속한 파일에 추가하십시오.

import UIKit 

class WebViewController: UIViewController, UIWebViewDelegate { 

@IBOutlet var webView: UIWebView! 

@IBOutlet var activityIndicator: UIActivityIndicatorView! 

override func viewDidLoad() { 

    super.viewDidLoad() 

    // Do any additional setup after loading the view. 

    let url = URL(string: "https://google.com") 

    let request = URLRequest(url: url!) 

    webView.loadRequest(request) 

    webView.scalesPageToFit = true 
} 

func webViewDidStartLoad(_ webView: UIWebView) { 

    print("Activity indicator start") 

    activityIndicator.startAnimating() 

} 

func webViewDidFinishLoad(_ webView: UIWebView) { 

    print("Activity indicator stop") 

    activityIndicator.stopAnimating() 

} 
} 

클래스에 대리인을 추가하십시오.