![](/img/trans.png)
[英]How to calculate height of custom UITableViewCell by using UILabel's content
[英]How to calculate UIViewController's intrinsic content height?
我需要确定UIViewController
的高度,以便在底片内显示它。 为了创建底部表,我使用FitterSheets库。 它接受UIViewController
,我想在表内显示和一些高度。 然后,库以我指定的高度显示我的视图 controller。 看起来一切正常且有意义,但是我如何计算我的视图 controller 的高度? 它可以是动态的(例如,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);
}
但我认为这不是正确的解决方案,它实际上不起作用。 那么,解决我的问题的最佳方法是什么? 如何显示高度等于内容高度的底页?
按照库文档中的说明:
如果视图 controller 小于指定的尺寸,它只会增长到呈现视图 controller 的内部高度。 如果它更大,它将在初始化程序或 setSizes function 中指定的每个高度处停止。
因此,您可以删除viewDidAppear
中的代码,只需添加一个大小数组,其中第一个大小是确定工作表初始大小的大小,例如:
present(SheetViewController(myViewController, sizes: [.fixed(100), .fullScreen]), animated: false)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.