确定容器VC中子级VC内容的高度,并使用它来调整容器vc的大小?

问题描述

我有一个容器视图控制器,可以容纳任何通用的ViewController。如果使用堆栈视图或任何其他视图(无滚动视图),则可以使用以下命令准确计算容器初始化程序中的大小:

let targetSize = CGSize(width: contentVC.view.bounds.width)
let preferredSize = contentViewcontroller.view.systemLayoutSizefitting(targetSize)
self.containerHeight = preferredSize.height

但是,一旦我处理子vc内的表视图,此操作便停止工作。高度返回为零。无需在子vc方面做很多/任何工作的最佳方法是什么?

注意:我正在使用自动布局(SnapKit)固定和布局视图。

解决方法

这是因为您试图在仅创建UIView(UITableView)并将其添加为子视图时访问该视图,但尚未绘制它。您必须强制绘制它。

self.view.setNeedsLayout()
self.view.layoutIfNeeded()

对于UIViewController,您可以在viewDidLoad()中访问它,这是知道大小的时刻