2012-03-02 69 views
1

我有一個UIView寬度/高度爲0/0。當我添加subviews到我的UIView,有沒有辦法讓寬度和高度自動更新ios uiview自動擴展尺寸

例如 如果我添加了10子視圖,每個子視圖的寬度爲50,那麼我希望我的UIView的寬度爲500

回答

1

我沒有遇到任何這樣的功能,它會自動執行。您必須通過計算其子視圖的位置和大小來設置框架。

2

UIView的sizeToFit將調整您的視圖的大小,以適應所有內容。

但是...這很依賴於您添加到視圖中的子視圖。添加視圖很簡單,只要:

[myView addSubview:innerView]; 

內的frame產生很大的差別。

如果添加10個x/y原點爲0/0和寬度/高度爲0/0的子視圖,則sizeToFit會說你需要你的視圖需要寬度/高度爲0/0以適應所有的子視圖。

如果您添加1個子視圖,其中x/y原點爲10/10,寬度/高度爲5/5,然後sizeToFit並說您需要15/15的寬度/高度以適合所有子視圖。

0

是的,UIView可以做到這一點。我最近遇到了這個問題,這裏是我的解決方案。

假設你有一個UIView和其中的10個子視圖。您必須爲子視圖設置約束,以便外部UIView能夠知道它的大小。

例如,您想垂直佈局10個子視圖。約束將是

  • 第1子視圖具有與外界的UIView
  • 第2子視圖具有與第1子視圖上邊距約束上邊距約束。
  • 第3個子視圖具有與第2個子視圖相關的頂部邊界約束。
  • 依此類推......
  • 第10個子視圖有與第9個子視圖相關的頂部邊界約束。
  • 而最重要的是,the 10th subview must have bottom margin constraint related to the outside UIView

爲了滿足上面的約束條件,外部UIView必須有一個高度自動包裝4個子子視圖。