查看两个UIWebViews高度计算问题?

时间:2015-07-10 11:38:46

标签: ios objective-c swift uiview uiwebview

我创建了一个UIViewController,它有一个带有两个UIWebViews的视图。我的结构看起来像这样(我也使用带有SnapKit的自动布局):

class MyIntViewController: UIViewController, UIWebViewDelegate {

  private var scrollView: UIScrollView!
  private var contentView: UIView!

  override func viewDidLoad() {
    super.viewDidLoad()

    self.view.backgroundColor = UIColor.whiteColor()
    setupView()
  }


  private func setupView() {

    scrollView = UIScrollView()
    self.view.addSubview(scrollView)

    scrollView.snp_makeConstraints { (make) -> Void in
      make.edges.equalTo(self.view)
    }

    contentView = UIView()
    contentView.backgroundColor = UIColor.greenColor()
    scrollView.addSubview(contentView)

    contentView.snp_makeConstraints { (make) -> Void in
      make.edges.equalTo(self.scrollView)
      make.width.equalTo(self.view.bounds.width)
    }

    // first webView

    let contentWebView1 = UIWebView()
    contentWebView1.scalesPageToFit = false
    contentWebView1.delegate = self
    contentWebView1.scrollView.bounces = false
    contentWebView1.scrollView.scrollEnabled = false

    contentView.addSubview(contentWebView1)

    contentWebView1.snp_makeConstraints { (make) -> Void in
        make.top.equalTo(contentView.snp_top)
        make.left.equalTo(self.view.snp_left)
        make.right.equalTo(self.view.snp_right)
        make.height.equalTo(1)
    }

    // second webView

    let contentWebView2 = UIWebView()
    contentWebView2.scalesPageToFit = false
    contentWebView2.delegate = self
    contentWebView2.scrollView.bounces = false
    contentWebView2.scrollView.scrollEnabled = false

    contentView.addSubview(contentWebView2)

    contentWebView2.snp_makeConstraints { (make) -> Void in
        make.top.equalTo(contentWebView1.snp_bottom)
        make.left.equalTo(self.view.snp_left)
        make.right.equalTo(self.view.snp_right)
        make.height.equalTo(1)
        make.bottom.equalTo(self.contentView.snp_bottom)
    }

    // load content for contentWebView1 and contentWebView2

    let path: String = NSBundle.mainBundle().bundlePath
    let baseURL: NSURL = NSURL.fileURLWithPath(path)!
    let myFileHtml: String = "HTWML for contentWebView1""
    let myFileHtmlPlusCss = MMCssHelper.appendCustomCSS(myFileHtml)
    contentWebView1.loadHTMLString(myFileHtmlPlusCss, baseURL: baseURL)

    let path: String = NSBundle.mainBundle().bundlePath
    let baseURL: NSURL = NSURL.fileURLWithPath(path)!
    let myFileHtml: String = "HTWML for contentWebView2""
    let myFileHtmlPlusCss = MMCssHelper.appendCustomCSS(myFileHtml)
    contentWebView2.loadHTMLString(myFileHtmlPlusCss, baseURL: baseURL) 
  }

  // MARK: UIWebViewDelegate

  func webViewDidFinishLoad(webView: UIWebView) {
    let webViewContentHeight: CGFloat = webView.scrollView.contentSize.height

    println("webViewDidFinishLoad webViewContentHeight: \(webViewContentHeight)")

    webView.snp_updateConstraints { (make) -> Void in
      make.height.equalTo(webViewContentHeight)
    }
  }

}

当我在页面上只有一个UIWebView时,一切正常,UIWebView的内容在webViewDidFinishLoad中正确计算。如上所示,两个UIViewViews会出现问题。控制台输出是:

webViewDidFinishLoad webViewContentHeight: 1.0
webViewDidFinishLoad webViewContentHeight: 17.0

您可以看到一个webViewContentHeight计算正确,而另一个似乎根本没有计算。

当页面上有多个UIWebView时,如何正确计算UIWebView的高度?

0 个答案:

没有答案