2016-07-16 38 views
1

Ich bin neu in Xcode. Kann mir jemand helfen, einen Ladespinner zu implementieren?So implementieren Sie das Laden von Spinner in Xcode

1) Ich brauche eine Lade Spinner von der Webseite beginnen zu Ende Webseite Laden

2) Auch laufen, ich brauche eine Fehlerwarnung im Fall anzuzeigen, dass die Website/Internet unten ist

import UIKit 
import WebKit 
class WebView : WKWebView { 

/** 
Initialize the WKWebView. 
*/ 
init(){ 
    let webConfig:WKWebViewConfiguration = WKWebViewConfiguration() 
    super.init(frame:CGRectZero,configuration:webConfig) 
    self.translatesAutoresizingMaskIntoConstraints = false 
    self.allowsBackForwardNavigationGestures = true 
    createHomePage() 
} 

/** 
Set the position for the WKWebView. 
*/ 
func setPosition(view: UIView) { 
    self.translatesAutoresizingMaskIntoConstraints = false; 
    let height = NSLayoutConstraint(item: self, attribute: .Height, relatedBy: .Equal, toItem: view, attribute: .Height, multiplier: 1, constant: +0) 
    let width = NSLayoutConstraint(item: self, attribute: .Width, relatedBy: .Equal, toItem: view, attribute: .Width, multiplier: 1, constant: 0) 
    let top = NSLayoutConstraint(item:self,attribute: .Top, relatedBy: .Equal, toItem: view, attribute: .Top, multiplier: 1, constant: 30) 
    view.addConstraints([height, width, top]) 

} 

/** 
Set the url the webview should display. 
*/ 
func setUrl(url:String!) { 
    if url != nil { 
     let url = NSURL(string:url) 
     let request = NSURLRequest(URL:url!) 
     self.loadRequest(request) 
    } 
} 

/** 
Create the home page. 
*/ 
func createHomePage() { 
    let UUID = UIDevice.currentDevice().identifierForVendor?.UUIDString 
    self.setUrl("https://mywebsite.com?deviceId="+UUID!) 

} 

} 

// eine weitere rasche Datei

import UIKit 
import WebKit 

class ViewController: UIViewController{ 

var webView: WebView 

required init(coder aDecoder: NSCoder) { 
    self.webView = WebView() 
    super.init(coder: aDecoder)! 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    view.addSubview(webView) 
    webView.setPosition(view) 
    view.backgroundColor = (UIColor(red: 0, green: 150/255, blue: 136/255, alpha: 1)); 
} 

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

// MARK: Actions 

} 

Antwort

2

in Storyboard-Datei, fügen Sie ein UIActivityIndicator in der gewünschten positi in deiner Szene. Gehen Sie dann zum Attributinspektor des UIActivityIndicators und setzen Sie die Option "Bei angehaltener Prüfung ausblenden" auf "checked" oder (true). Wie so

enter image description here

Erstellen Sie dann ein IBOutlet die UIActivityIndicator auf Ihre ViewController.swift Klasse verbindet. Dies tun Sie, indem Sie bei gedrückter Strg-Taste auf den UIActivityIndicator klicken und die Zeile in die ViewController.swift-Klasse ziehen. Beachten Sie, dass das folgende Drag & Drop-Bild keinen UIActivityIndicator, sondern ein UITextField verbindet. Dies liegt daran, dass ich gerade ein Bild online als Beispiel gefunden habe, da ich nicht herausfinden kann, wie man einen Gyazo-Screenshot mit Strg + Klick ziehen kann.

enter image description here

Sie werden dann mit so etwas wie dieses

enter image description here

Sie es einfach Namen gefragt bekommen, was Sie wollen, aber für dieses Beispiel werde ich es „activityIndicator“ nennen. Es wird dann diesen Code in die Zeile schreiben, auf die Sie beim Verknüpfen des Elements zeigen.

enter image description here

Von dort wollen Sie die Linien verwenden

activityIndicator.startAnimating() 

und

activityIndicator.stopAnimating() 

in Orten, wo man beginnen soll und den ActivityIndicator zu stoppen, dass die WebView zu animieren anzeigt wird geladen und wenn es fertig geladen ist. Basierend off Sie uns den Code gab, glaube ich Sie Ihre ViewController.swift-Datei dies ändern sollte:

import UIKit 
import WebKit 

class ViewController: UIViewController{ 

var webView: WebView 
@IBOutlet var activityIndicator: UIActivityIndicatorView! 

required init(coder aDecoder: NSCoder) { 
    //ViewController has been initialized and will be initializing WebView, so start animating the activityIndicator 

    self.activityIndicator.startAnimating() 


    self.webView = WebView() 
    super.init(coder: aDecoder)! 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    view.addSubview(webView) 
    webView.setPosition(view) 
    view.backgroundColor = (UIColor(red: 0, green: 150/255, blue: 136/255,  alpha: 1)); 

    //When the webView is added successfully to the subview, I believe that it has loaded correctly and the activityIndicator should stop animating. 
    activityIndicator.stopAnimating() 
} 

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

// MARK: Actions 

} 

Was die zweite Frage , wo Sie einen Fehler aufmerksam zu machen, falls wollen, habe ich keine Erfahrung mit WebKit und ich weiß es nicht. Aber vielleicht kann ihm jemand anderes helfen, während ich recherchiere und eine Antwort finde.

Wenn das zu tief war, meine schlechte. Du hast gesagt, dass du neu beim Schreiben von Code bist, und mir wurde nie beigebracht, wie man Elemente in meinen Storyboard-Dateien mit meinen ViewControllern verbindet, also hoffe ich, dass dir das hilft, wenn du jemals auf dieses Problem gestoßen bist.