Swift 3,iOS 10.3 - 在启动屏幕期间预加载UIWebView

时间:2017-04-20 08:12:59

标签: ios swift uiwebview preload

我有一个应用程序,它在不同的ViewControllers上有多个 WebViews,但加载它们大约需要3秒钟。是否可以在启动屏幕期间开始加载网页,或者当用户位于FirstViewController的网页上时加载SecondViewController的WebView?

    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()
    }
}

2 个答案:

答案 0 :(得分:3)

也许最好的方法是在视图控制器的视图上方放置一个与启动画面完全相同的临时视图。

将您的视图控制器添加为UIWebView的委托,并在方法webViewDidFinishLoad:中关闭临时视图。

理论上,用户只会相信启动画面需要花费更多时间。

答案 1 :(得分:0)

在网页视图中使用活动指示器,这样当网站加载时,活动指示器将开始制作动画,当网站完全加载时,动画将停止。

在故事板中添加网络视图和活动指示器。

现在将此代码添加到swift文件中。

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()

}
}

确保在班级中添加委托。