web-dev-qa-db-fra.com

Création de WebViews par programme dans Swift

Je veux créer quelque chose comme une galerie d'images dans mon ViewController. Pour cela, il me faudrait plusieurs vues Web, en fonction du nombre d'images que je reçois d'une requête JSON. Comment puis-je insérer de nouvelles WebViews si nécessaire?

 enter image description here

Comme vous pouvez le voir dans l'image ci-dessus, j'ai un scrollView et un UIWebView à l'intérieur du ViewController. Comment créer une nouvelle WebView dans la première (deuxième, troisième, etc.) si nécessaire? C'est possible?

11
Orkhan Alizade

vous pouvez créer la vue Web par programme aussi simple que possible utiliser ce code 

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

et si vous voulez utiliser cette fonction de délégué 

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
Deepakraj Murugesan

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

Référence: Basé sur la réponse fournie par @Deepakraj Murugesan

4
kurrodu

Bien que UIWebView ne soit probablement pas ce que vous devriez utiliser pour afficher des images, vous pouvez en créer un avec seulement quelques lignes de code:

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

vous ne pouvez pas faire cela, à l'origine , la visualisation Web consomme beaucoup de mémoire; si vous en utilisez une certaine quantité, vous risquez d'obtenir une mauvaise expérience.

0
Burning

Je pense que SDWebImage + UIImageView va vous aider. Voir: https://github.com/rs/SDWebImage

0
John Lee

Pour 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

De plus, vous devez importer WebKit et ajouter WKNavigationDelegate à la classe.

0
Ben