[英]Extending UITableViewCell with UIStackView in Objective-C
[英]Objective-c: Dynamic size of UIStackView, depending of it's content
我有一個 UIStackView,它在滾動視圖中。 stackView 的內容是動態的,具體取決於使用“addArrangedSubview”方法創建和添加的視圖數量。 如果我有幾個子視圖,它們之間的間距就會很大,如果我有太多的視圖,它們就會被壓縮。
我有:
_viewController
|__ 視圖
|____滾動視圖
|______stackView(動態內容)
我將堆棧視圖設置為:
我想在每次添加視圖時增加 UIStackview 的大小,並保持我添加的子視圖的大小。 也許缺少某些東西,或者我有一個不好的理解..有人可以向我解釋如何做嗎?
我正在使用objective-c
我有一篇關於這個主題的詳細的Medium 帖子。 您可以查看那里的分步指南。 但我也在這里添加一個簡短的解釋:
您應該為滾動視圖設置所有必要的約束到它的超級視圖。 然后是您的堆棧視圖,它是此滾動視圖的子視圖。 您可能也將此堆棧視圖的所有四個邊緣固定到滾動視圖。 但真正的擔憂來了。
UIScrollView
不像其他視圖那樣工作。 它有一個contentView
。 此內容視圖負責滾動行為。 如果滾動視圖框架中容納不下的內容多於啟用滾動。
因此,為了正確設置內容視圖,滾動視圖必須知道內容視圖的大小,以便知道何時停止滾動。 這里的 size 表示實際的width
和height
。 但是這個大小不能從約束的設置中確定,因為它們是由自動布局引擎動態計算的。
在您的情況下,堆棧視圖充當滾動視圖的內容視圖。 您可能已將堆棧視圖的所有邊緣固定到它的超級視圖 - UIScrollView
。 但這還不足以讓滾動視圖計算內容大小。 您還必須提供:
width
和height
- 如果您的滾動視圖可在兩個軸上滾動width
- 如果要垂直滾動並限制水平滾動height
- 如果要水平滾動並限制垂直滾動由於您需要水平滾動,您必須通過提供等於滾動視圖的堆棧視圖的height
來限制垂直滾動(它並不總是需要與滾動視圖的高度相同,但應該覆蓋整個高度通過其他方式滾動視圖)。 並且您還需要一個占位符x 軸約束來使Interface Builder
滿意。 內容視圖的實際width
將被添加到堆棧視圖的子視圖覆蓋。
重要提示:您應該將Horizontally in Container約束添加到堆棧視圖,並使其成為將在構建時移除的占位符。 您可以通過在文檔大綱中選擇約束並打開大小檢查器來完成此操作,您將在其中看到一個Remove at build time
復選框。 你選中那個框,你就可以開始了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.