2015-02-11 87 views
3

在一個循環中與自己從哪裏獲得細胞的大小集合視圖中的情況下,我有自動佈局單元格計算sizeForItemAtIndexPath在UICollectionView不使用我的細胞

我明白sizeForItemAtIndexPath應得的大小來自數據而不是來自單元本身,因爲單元格尚未繪製,但在自動佈局中,我不能通過查看數據來計算這個值,除非我以稍後的方式將代碼放入代碼中從他們的計算(似乎歪)

另一方面,UIView確實有intrinsicContentSizesystemLayoutSizeFittingSize它給出了已經繪製的視圖的大小o r將被繪製。

但在sizeForItemAtIndexPath我還沒有一個視圖,數據只是數據。

細胞筆尖看起來像這樣 enter image description here

以何種方式,我應該得到一個自定義單元格的大小(從筆尖)?

我可以在技術上爲圖片和圖標設計硬代碼大小,但感覺不對。問問視圖是什麼尺寸,它應該告訴控制器它的尺寸是多少?

+0

你試圖顯示什麼數據?有很多**的方法來獲取數據**將在屏幕上佔用的大小。對於文本,你可以得到'NSAttributedString'的邊界矩形。對於一幅圖像,你可以計算出你希望它在屏幕上有多大,等等。你也可以實例化一個代理視圖,你可以重新使用它進行尺寸調整(在我的測試中,你不能實例化一個單元格以此目的)。給我更多的細節,我會盡力給你一個更具體的答案。 – mbm29414 2015-02-11 13:54:43

+0

我添加了筆尖的截圖 – 2015-02-11 14:03:25

+0

啊,好的。如果您有自定義XIB,請參閱此答案:http://stackoverflow.com/a/28161915/394484。應該給你你想要的。 – mbm29414 2015-02-11 14:12:23

回答

2

你可以使用一個你配置的屏幕原型單元,然後用它來確定它的尺寸。

這是iOS8 UITableView確定單元高度的常用方法。相同的方法應該適用於UICollectionView。

查看接受的答案在這裏:Using Auto Layout in UITableView for dynamic cell layouts & variable row heights

+0

當我嘗試類似的方法'UICollectionViewCell'時,它證明是不可能的。看到這裏:http://stackoverflow.com/a/28161915/394484 – mbm29414 2015-02-11 14:11:48

+0

也許'UICollectionViewCell'佈局的問題是,手動進行時沒有設置寬度。使用UITableViewCell時,寬度是已知的。也許固定寬度會允許正確的高度尺寸?只是一個想法。但是使用什麼寬度。 – 2015-02-11 14:44:40

+4

實際上,除'cellForItemAtIndexPath:'外,存在集合視圖單元出列的問題。出於某種原因,這崩潰了。我同意這是意想不到的,但這就是我們在我聯繫的答案中發現的。 – mbm29414 2015-02-11 14:46:31