Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据webview内容更改UITableViewCell高度_Uitableview_Nslayoutconstraint - Fatal编程技术网

根据webview内容更改UITableViewCell高度

根据webview内容更改UITableViewCell高度,uitableview,nslayoutconstraint,Uitableview,Nslayoutconstraint,我有一个嵌套在UITableViewCell中的UIWebView 如何根据我加载到WebView中的内容(即下载完成后)调整单元格的高度 我使用tableview将RowatPath的高度设置为UITableViewAutomaticDimension loadContentIntoWebview由TableView的所有者在其cellForRowAt委托方法中调用 我注意到heightForRowAt在cellForRowAt之前被调用,因此我基于单元格的webview内容大小设置高度的“解

我有一个嵌套在UITableViewCell中的UIWebView

如何根据我加载到WebView中的内容(即下载完成后)调整单元格的高度

我使用tableview将RowatPath的高度设置为
UITableViewAutomaticDimension

loadContentIntoWebview
由TableView的所有者在其
cellForRowAt
委托方法中调用

我注意到
heightForRowAt
cellForRowAt
之前被调用,因此我基于单元格的webview内容大小设置高度的“解决方案”不起作用


其中heighWebVwMain是单元格网络视图高度的约束。所以你必须在cellforRow中设置这个常数,方法也找到了一个解决方案

  • webviewdiffinishload(webView:UIWebView)
    中设置约束的 高度与初始问题相同,但使用
    document.body.clientHeight
  • 弹出一个通知,告诉关联的tableview不要
    reloadData()
    ,而是
    beginUpdates()
    然后
    endUpdates()


这似乎可以在不重新加载的情况下重新绘制单元格:)

因此我的WebView位于单元格中。。。所以没有self.tableview。。。我可以引用它,但那似乎很糟糕。我已经找到了一个解决方案,我将在下面作为答案发布。。。不过谢谢你的帖子:)self.tableview将获得手机
import UIKit

class MyCell: UITableViewCell, UIWebViewDelegate {

  // MARK: - instance variables

  @IBOutlet weak var myWebview: UIWebView?



  // MARK: - lifecycle methods

  override func awakeFromNib() {
    super.awakeFromNib()

    myWebview?.scrollView.bounces = false;
  }

  override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)
    // Configure the view for the selected state
  }



  // MARK: - private methods

  func loadContentIntoWebview(htmlString: String) {
    myWebview?.loadHTMLString(htmlString, baseURL: nil)
  }



  // MARK: - UIWebViewDelegate methods

  func webViewDidFinishLoad(_ webView: UIWebView) {
    // dynamically set WebView height
    let tempString = myWebview?.stringByEvaluatingJavaScript(from: "document.body.scrollHeight")
    var tempHeight: CGFloat = 0.0
    if let n = NumberFormatter().number(from: tempString!) {
      tempHeight = CGFloat(n)
    }

    myWebview?.frame.size.height = tempHeight
  }
}
func webViewDidFinishLoad(_ webView: UIWebView) {
    if let cell :yourCell = self.yourTblVw.cellForRow(at: yourindexpath) as? yourCell{

        // set height of webview as per its content
        var frame = cell.webView.frame
        frame.size.height = 1
        let fittingSize = cell.webView.sizeThatFits(CGSize.zero)
        frame.size = fittingSize
        cell.heightWebVwMain.constant = fittingSize.height
       }
@objc func handleWebviewFinishedLoading() {
    self.webview?.beginUpdates()
    self.webview?.endUpdates()
}