问题描述
我有一个容器视图控制器,可以容纳任何通用的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()
中访问它,这是知道大小的时刻