簡體   English   中英

如何計算 UIViewController 的內在內容高度?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM