Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.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
Ios Swift不更新视图约束_Ios_Swift_Uitableview_Uiwebview_Constraints - Fatal编程技术网

Ios Swift不更新视图约束

Ios Swift不更新视图约束,ios,swift,uitableview,uiwebview,constraints,Ios,Swift,Uitableview,Uiwebview,Constraints,我有一个UIWebView。我正在使用以下代码: func webViewDidFinishLoad(_ webView: UIWebView) { self.webView.frame.size.height = 1 self.cardBoxNameTopConstraint.constant = webView.sizeThatFits(CGSize.zero).height self.webView.frame.size.height = webView.siz

我有一个
UIWebView
。我正在使用以下代码:

func webViewDidFinishLoad(_ webView: UIWebView) {
    self.webView.frame.size.height = 1

    self.cardBoxNameTopConstraint.constant = webView.sizeThatFits(CGSize.zero).height

    self.webView.frame.size.height = webView.sizeThatFits(CGSize.zero).height
    self.webView.scrollView.contentSize.height = webView.sizeThatFits(CGSize.zero).height
    self.contentView.frame.size.height = webView.sizeThatFits(CGSize.zero).height

    for v in self.contentView.subviews {
        v.setNeedsDisplay()
        v.layoutIfNeeded()
    }
}
此代码旨在获取内容大小,然后应用它并调整视图大小,但第一次加载视图时,它会调整我的
UIWebView
,并且
UITableViewCell
不可滚动。当我使用
UISegmentControl
转到另一个屏幕并使用我的
UIWebView
返回屏幕时,它会调整自身大小,
UITableViewCell
现在可以调整大小

如何在不切换屏幕的情况下更新视图?我正在使用
setNeedsDisplay
v.layoutifneed
,但它没有帮助


如何解决此问题?

您可以调用
contentView.setNeedsDisplay()
contentView.layoutIfNeed()
,并在子视图中循环。这两个调用都将递归地通过子视图。我同意dmorrow。问题是您在错误的视图上调用了
layoutifneed()
。它需要是需要布局的所有内容的超级视图。您可以通过子视图循环调用
contentView.setNeedsDisplay()
contentView.layoutIfNeed()
。这两个调用都将递归地通过子视图。我同意dmorrow。问题是您在错误的视图上调用了
layoutifneed()
。它需要是所有需要布局的事物的超视图。