【发布时间】:2020-09-23 20:39:48
【问题描述】:
我需要确定UIViewController 的高度,以便在底部表中显示它。为了创建底部表,我使用FitterSheets
图书馆。它接受UIViewController 我想在工作表内显示和一些高度。然后,库以我指定的高度显示我的视图控制器。似乎一切正常且有意义,但是我如何计算视图控制器的高度?它可以是动态的(例如,stackview 中的动态视图)。在显示它之前我无法计算它的高度。换句话说,我不知道我的屏幕内容的大小是多少,因为我从服务器获取数据。如果你不明白问题,这里是代码片段:
present(SheetViewController(myViewController, size: ?), animated: false);
我应该通过什么尺寸?当然我可以近似计算(例如,根据我从 API 获得的数据,我可以将数据量乘以屏幕中某个视图的高度)。但是,这将是近似的,不准确的。
我认为我的解决方案应该如下:我在呈现SheetViewController 时没有指定任何高度。我只是在我的视图控制器的视图完全出现后调整SheetViewController 的大小。伪代码如下:
override viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
var contentSize = 0
view.subviews.forEach {
contentSize += $0.frame.height
}
sheetViewController?.resize(contentSize);
}
但我认为这不是正确的解决方案,而且它实际上不起作用。那么,解决我的问题的最佳方法是什么?如何显示高度等于内容高度的底页?
【问题讨论】:
标签: ios swift uiviewcontroller autolayout bottom-sheet