2012-12-14 109 views
5

我用集裝箱查看汽車的佈局有一些問題(在兩種情況下:與iOS5的使用的視圖容納圖案和簡單的容器視圖)。(自動佈局)容器視圖調整大小,但子視圖不

我有一種自定義的主從控制,我可以調整後,一些用戶操作左容器和右控制器關聯必須相應地調整到新的空間剩餘未使用。

對於「細節」控制器I設置有XIB控制器和使用自動佈局我有裏面一些視圖。在視覺格式中,他們會是這樣的:

  • V:| [headerView] [contentView] [footerView] |
  • H:| [headerVieW]
  • H:| [內容查看]
  • H:| [footerView]

這僅僅是已瞭解的問題的表示。

如果我嘗試調整詳細controller.view框架這擴展正確,但子視圖不。

在該控制器的 - (void)viewDidLayoutSubviews方法中,我試圖手動設置框架,並且工作正常,但由於我使用自動佈局,這不是正確的事情!

如果我有一個通用視圖和一個包含圖像視圖的子視圖,如果我使用自動佈局從xib定義該視圖,如果我在運行時在視圖設置了子視圖之後更改了框架(edample的imageviews)不要調整大小。

任何人都可以幫助我嗎?

謝謝!

+0

有沒有得到這個地方?似乎很多人都有類似的問題,但沒有找到解決方案! – elsurudo

回答

1

根據您的約束描述,我想描述的行爲正是你告訴它做的事。

請注意,您的水平約束要求視圖與其超級玩家的左側齊平。然而,他們並沒有說明他們應該如何與超級觀點的正確方面聯繫。因此,改變超視圖的寬度不會做任何事情;他們只是保持與左側大小齊平,並保持其內部限制提供的任何寬度。

如果你想的意見,與他們的上海華調整,那麼你需要的尾側添加約束。具體來說,您的約束可能是這樣的:

H:|[headerView]| 
H:|[contentView]| 
H:|[footerView]| 

或者,也許你想,如果上海華太窄他們只能收縮,但在其他方面沒有延伸穿過它的所有道路。然後,你可以這樣做:

H:|[headerView]-(>=10)-| 
H:|[contentView]-(>=10)-| 
H:|[footerView]-(>=10)-| 

無論如何,這似乎是你的問題的根源是,意見不依賴於以任何方式上海華的右邊緣,這是不依賴於它的寬度以任何方式。添加這些約束可以解決問題。

0

如果您的視覺格式的視圖介於「|」 (這是你的情況)

CGSize fittingSize = [container systemLayoutSizeFittingSize: UILayoutFittingCompressedSize]; 
container.frame = CGRectMake(0, 150, 320, fittingSize.height); 
相關問題