【问题标题】:Creating webViews programmatically in Swift在 Swift 中以编程方式创建 webView
【发布时间】:2015-07-27 10:32:52
【问题描述】:

我想在我的 ViewController 中创建类似图片库的东西。为此,我需要多个 webView,具体取决于我从 JSON 请求中获得的图像数量。如果需要,如何插入新的 webView?

如上图所示,我在 ViewController 中有一个 scrollView 和一个 UIWebView。如有必要,我将如何在第一个(第二个、第三个等)内创建一个新的 webView?有可能吗?

【问题讨论】:

  • 你是说图片库?为什么要使用 UIWebView?有 UIImageView,要创建多个 UIImageView,你有单元格,要呈现单元格,你有 UICollectionView。至于如何做到这一点,here 是教程列表。干杯。

标签: ios swift webview uiwebview


【解决方案1】:

您可以使用这段代码尽可能简单地以编程方式创建 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)
}

如果你想使用这个委托函数

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

【讨论】:

  • 谢谢!但是我怎样才能把它放到scrollView中呢?我有一个新的 ViewController,它嵌入到 mainController。在 subController 里面我有 scrollView,我想把这个 webView 放在里面
  • 你可以在滚动视图中使用它作为子组件
  • 感谢您的回答。我正要发布一个问题,但我很高兴我找到了这个答案......正是我想要的!
  • 不那么冗长:UIWebView(frame: UIScreen.mainScreen().bounds) 而不是 UIWebView(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height)
【解决方案2】:

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

参考:基于@Deepakraj Murugesan 提供的答案

【讨论】:

    【解决方案3】:

    虽然 UIWebView 可能不是您应该用来显示图像的东西,但您只需几行代码就可以创建一个:

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

    【讨论】:

      【解决方案4】:

      你不能那样做,本来webview会占用很多内存,如果你用了一些会导致不好的体验,为什么不用ImageView呢?

      【讨论】:

        【解决方案5】:

        对于 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
        

        另外,您需要导入 WebKit 并将 WKNavigationDelegate 添加到类。

        【讨论】:

          猜你喜欢
          • 2017-03-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多