web-dev-qa-db-de.com

WebViews programmatisch in Swift erstellen

Ich möchte in meinem ViewController so etwas wie eine Bildergalerie erstellen. Dafür brauche ich mehrere WebViews, abhängig von der Anzahl der Bilder, die ich von einer JSON-Anfrage bekomme. Wie kann ich bei Bedarf neue WebViews einfügen?

 enter image description here

Wie Sie im obigen Bild sehen können, habe ich eine ScrollView und eine UIWebView im ViewController. Wie erstelle ich ggf. ein neues WebView innerhalb des ersten (zweiten, dritten usw.)? Ist es möglich?

11
Orkhan Alizade

sie können die Webansicht programmatisch so einfach wie möglich erstellen, indem Sie diesen Code verwenden 

override func viewDidLoad() {
    super.viewDidLoad()
    let webV:UIWebView = UIWebView(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height))
    webV.loadRequest(NSURLRequest(URL: NSURL(string: "http://www.google.co.in")))
    webV.delegate = self;
    self.view.addSubview(webV)
}

und wenn Sie diese Delegatfunktion verwenden möchten 

func webView(webView: UIWebView!, didFailLoadWithError error: NSError!) {
    print("Webview fail with error \(error)");
}
func webView(webView: UIWebView!, shouldStartLoadWithRequest request: NSURLRequest!, navigationType: UIWebViewNavigationType) -> Bool {
    return true;
}
func webViewDidStartLoad(webView: UIWebView!) {
    print("Webview started Loading")
}
func webViewDidFinishLoad(webView: UIWebView!) {
    print("Webview did finish load")
}
22

Für Swift 3:

override func viewDidLoad() {
    super.viewDidLoad()
    let webV    = UIWebView()
    webV.frame  = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
    webV.loadRequest(NSURLRequest(url: NSURL(string: "https://www.Apple.com")! as URL) as URLRequest)
    webV.delegate = self
    self.view.addSubview(webV)
}

Referenz: Basierend auf der Antwort von @Deepakraj Murugesan

4
kurrodu

Obwohl UIWebView wahrscheinlich nicht das ist, was Sie zum Anzeigen von Bildern verwenden sollten, können Sie eines mit nur wenigen Codezeilen erstellen:

let webView = UIWebView(frame: someFrame)
webView.loadRequest(NSURLRequest(URL: someURL!))
view.addSubview(webView)
2
budidino

sie können das nicht tun. Ursprünglich , nimmt webview viel Speicherplatz in Anspruch, wenn Sie etwas davon verwenden, kann dies zu einer schlechten Erfahrung führen. , Warum verwenden Sie ImageView nicht?

0
Burning

Ich denke, SDWebImage + UIImageView wird Ihnen helfen. Siehe: https://github.com/rs/SDWebImage

0
John Lee

Für Swift 4:

webView = WKWebView()
webView.navigationDelegate = self
view = webView

let url = URL(string: "https://www.earthhero.org")!
webView.load(URLRequest(url: url))
webView.allowsBackForwardNavigationGestures = true

Außerdem müssen Sie WebKit importieren und WKNavigationDelegate zur Klasse hinzufügen.

0
Ben