gpt4 book ai didi

ios - 如何计算UIViewController内部内容的高度?

转载 作者:行者123 更新时间:2023-12-01 21:46:08 35 4
gpt4 key购买 nike

我需要确定UIViewController的高度才能在 Bottom Sheet 中显示它。为了创建 Bottom Sheet ,我使用FitterSheets
图书馆。它接受我想在工作表内显示的UIViewController和一些高度。然后,库以我指定的高度显示我的 View Controller 。看起来一切正常,并且有意义,但是我如何能够计算 View Controller 的高度?它可以是动态的(例如,stackview中的动态 View )。我无法在显示之前计算其高度。换句话说,我不知道屏幕上内容的大小如何,因为我从服务器获取了这些数据。如果您不了解问题,请阅读以下代码:

present(SheetViewController(myViewController, size: ?), animated: false); 

我应该通过什么尺寸?当然,我可以近似地对其进行计算(例如,根据从API获得的数据,我可以将数据量乘以屏幕上某个 View 的高度)。但是,这将是近似的而不是准确的。

我认为我的解决方案应该是:在呈现 SheetViewController时,我不指定任何高度。在我的 View Controller 的 View 完全显示之后,我只是调整 SheetViewController的大小。伪代码如下:
override viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
var contentSize = 0
view.subviews.forEach {
contentSize += $0.frame.height
}
sheetViewController?.resize(contentSize);
}

但是我认为这不是正确的解决方案,并且实际上是行不通的。那么,解决我的问题的最佳方法是什么?如何显示高度等于内容高度的 Bottom Sheet ?

最佳答案

按照库文档中的说明进行操作:

If the view controller is smaller than the sizes specified, it will only grow as large as the intrensic height of the presented view controller. If it is larger, it will stop at each height specified in the initializer or setSizes function.



因此,您可以删除 viewDidAppear中的代码,而只需添加一个尺寸数组,其中第一个尺寸是确定图纸初始尺寸的尺寸,例如:
present(SheetViewController(myViewController, sizes: [.fixed(100), .fullScreen]), animated: false)

关于ios - 如何计算UIViewController内部内容的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62201800/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com