【问题标题】:IOS webview in full screenIOS webview全屏
【发布时间】:2017-09-20 11:58:19
【问题描述】:

这确实是一个非常简单的问题,但我对 IOS 开发和 Swift 完全陌生。

我正在尝试添加一个 webview 并让它填满整个屏幕。

这是我的代码

 override func viewDidLoad() {
        super.viewDidLoad()

        let myWebView:UIWebView = UIWebView(frame: CGRect(x: 0, y: 0, width: 300, height: 300))

        self.view.addSubview(myWebView)
        let url = URL (string: "https://google.com");
        let request = URLRequest(url: url! as URL);
        myWebView.loadRequest(request);
        }

当我运行应用程序时,只出现一个白屏。我可以将 html 作为字符串加载 (loadHTMLString)

所以 2 个问题

  • 如何让 Web 视图获得全屏尺寸?
  • 为什么我无法加载 url - 我只得到白屏

【问题讨论】:

  • 您可以使用 self.view.frame.size.width 作为宽度,使用 self.view.frame.size.height 作为高度
  • 你还没有添加 webView 来查看。

标签: ios swift uiwebview


【解决方案1】:

试试这个。

class ViewController: UIViewController , UIWebViewDelegate {

override func viewDidLoad() {
        super.viewDidLoad()


        let myWebView:UIWebView = UIWebView(frame: CGRect(x: 0, y: 20, width: self.view.frame.width, height: self.view.frame.height))
        myWebView.delegate = self
        self.view.addSubview(myWebView)
        let url = URL (string: "https://google.com");
        let request = URLRequest(url: url! as URL);
        myWebView.loadRequest(request);


    }

    func webViewDidStartLoad(_ webView: UIWebView) {
        print("web view start loading")
    }

    func webViewDidFinishLoad(_ webView: UIWebView) {
        print("web view load completely")
    }

    func webView(_ webView: UIWebView, didFailLoadWithError error: Error) {
        print("web view loading fail : ",error.localizedDescription)
    }
}

【讨论】:

  • @Birger 检查更新了我检查过的工作正常。
  • @Birger - 添加代理并检查哪个代理将调用
  • 它可以工作..手机由于某种原因失去了wifi..感谢您的快速帮助
  • @DixitAkabari - 失败代表在哪里
【解决方案2】:

这是因为您还没有将myWebView 添加到view

override func viewDidLoad() {
    super.viewDidLoad()
    let myWebView:UIWebView = UIWebView(frame: CGRect(x: 0, y: 20, width: self.view.frame.width, height: self.view.frame.height))

    self.view.addSubview(myWebView)
    let request = URLRequest(url: URL(string: "https://google.com")!)
    myWebView.loadRequest(request)
}

【讨论】:

    【解决方案3】:
    Hear is your answers of two questions
    
    **1.How do I get the web view to get fullscreen size?**
    
    **Ans**: let myWebView:UIWebView = UIWebView(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height))
    
    **2 Why can't I load a url - I only get the white screen**
    **Ans**:
            let myWebView:UIWebView = UIWebView(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height))
            let url = URL (string: "https://google.com");
            let request = URLRequest(url: url! as URL);
            myWebView.loadRequest(request)
            self.view.addSubview(myWebView)
    
    Load request before adding to self.view like above code
    

    【讨论】:

      【解决方案4】:

      完成 webview 加载后,根据内容更改 webview 大小

       //MARK: - WebView Delegate Method
      func webViewDidFinishLoad(_ webView: UIWebView) {
          var frame = self.webView.frame
          frame.size.height = 1
          self.webView.frame = frame
          let fittingSize = self.webView.sizeThatFits(CGSize.zero)
          frame.size = fittingSize
          self.webView.needsUpdateConstraints()
          self.webView.frame.size.height = fittingSize.height
          self.webView.scrollView.isScrollEnabled = false
      }
      

      【讨论】:

        【解决方案5】:

        我运行了您的代码,没有任何问题。

        框架除外

        你需要的改变 -

          let myWebView:UIWebView = UIWebView(frame: self.view.frame)
        

        如果您无法从 url 加载,请检查您的互联网连接

        webView:didFailLoadWithError
        

        实现此功能以检查您将来遇到的任何错误

        【讨论】:

        • 愚蠢的手机失去了wifi..它现在加载url..真是一个菜鸟错误
        【解决方案6】:

        你已经用固定的高度和宽度初始化了 myWebView,即 300.Try

        let frame = self.view.frame
        let width = frame.width
        let height = frame.height
        let myWebView:UIWebView = UIWebView(frame: CGRect(x: 0, y: 0, width: width, height: height))
        

        使用情节提要,您可以将 webView 拖放到 viewController 中并为您的视图提供约束(顶部:0,右侧:0,底部:0,左侧:0),以便您的 web 视图将显示为全屏。现在将 webView 的出口扩展到 viewController 和 viewDidLoad。

        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view
            let url = URL (string: "https://www.simplifiedios.net")
            let request = URLRequest(url: URL: url!)
            webView.loadRequest(request)
        }
        

        【讨论】:

        • 不是与 ? 相关的答案,使用 myWebView.frame = self.view.bounds 并检查您的 .plist 中是否添加了传输安全
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-06
        • 1970-01-01
        相关资源
        最近更新 更多