简体   繁体   English

在Swift中以编程方式创建webView

[英]Creating webViews programmatically in Swift

I want to create something like an image gallery in my ViewController. 我想在我的ViewController中创建类似图像库的东西。 For this, I'd need multiple webViews, depending on the number of images that I get from a JSON request. 为此,我需要多个webView,具体取决于我从JSON请求获得的图像数量。 How can I insert new webViews if I need to? 如果需要,如何插入新的webView?

在此输入图像描述

As you can see in the above image, I have a scrollView and one UIWebView inside of the ViewController. 正如您在上图中看到的,我在ViewController中有一个scrollView和一个UIWebView。 How would I create a new webView inside of the first(second, third, etc.) if necessary? 如有必要,我如何在第一个(第二个,第三个等)内创建一个新的webView? Is it possible? 可能吗?

you can create the web view programatically as simple as possible use this piece of code 您可以使用这段代码尽可能简单地以编程方式创建Web视图

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

and if you want use this delegate function 如果你想使用这个委托功能

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

For Swift 3: 对于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)
}

Reference: Based on the answer provided by @Deepakraj Murugesan 参考:基于@Deepakraj Murugesan提供的答案

Although UIWebView is probably not the thing you should use for displaying images, you can create one with just a few lines of code: 尽管UIWebView可能不是您应该用于显示图像的东西,但您可以使用几行代码创建一个:

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

你不能这样做,原来,webview会占用大量内存,如果你使用了一些数量,可能会导致糟糕的体验,为什么不使用ImageView?

I think SDWebImage + UIImageView will help you. 我认为SDWebImage + UIImageView会帮助你。 See: https://github.com/rs/SDWebImage 请参阅: https//github.com/rs/SDWebImage

For Swift 4: 对于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

Plus you need to import WebKit and add WKNavigationDelegate to the Class. 另外,您需要导入WebKit并将WKNavigationDelegate添加到类中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM