[英]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.