2013-07-25 63 views
2

當使用自動佈局,調用intrinsicContentSize似乎是確定什麼CGSize要求正確適合的意見內容的方法。iOS的自動佈局intrinsicContentSize = -1

然而,這種方法僅支持現有UIViews的數量有限。 無論何時,我都可以製作自定義視圖,即使它是容器UIView內部的UILabel一樣簡單,但包含視圖的視圖無法確定其int​​rinsicContentSize(返回-1)。

我不明白爲什麼認爲是能夠正確地顯示在屏幕上仍然認爲甚至不知道自己的身高......

中的UILabel在容器視圖是一個簡單的例子,但我正在處理稍微更復雜的UIViews,其中可能有15個視圖嵌套在eachother內。爲了確定包含所有子視圖的視圖的大小,我必須手動創建我自己的intrinsicContentSize方法,並且要做非常耗時的工作,我必須總結子視圖的所有高度,並加上所有的限制。 這個過程很糟糕。忘記添加其中一個子視圖或約束的高度,很容易錯過某處的高度。此外,由於動態子視圖這一事實使問題更加複雜。例如,如果視圖有2列動態子視圖,則需要手動查找每列的子視圖+約束的高度,比較這些高度並返回兩者中較大的一個。再次,這是一個簡單的例子,但通常不是那麼簡單,導致許多偏頭痛。

回到了我早些時候問。 iOS如何顯示視圖,但不知道視圖有多高?必須有一些方法來找出那個高度是多少。謝謝閱讀。

這裏是一個圖像,以幫助想象我想要的東西。 image

回答

0

是使用自動佈局自己所有的子視圖?我的意思是,如果您使用自動佈局來放置MyCompositeObject,那是在內部使用約束來放置其多個對象的組合對象?我發現如果是這樣的話,那麼intrinsicContentSize將會考慮所有的子視圖,但是如果沒有的話,你的UIView的內容大小最終會返回一些不準確和小的東西。