uicollectionview - динамическая высота ячейки?


Мне нужно, чтобы отобразить кучу collectionViewCells, которые имеют разную высоту. взгляды слишком сложны, и я не хочу, чтобы вручную рассчитать ожидаемую высоту. Я хочу реализовать авто-схема для расчета высоты ячейки

dequeueReusableCellWithReuseIdentifiercellForItemAtIndexPath

Звоню вне перерывов collectionView и приводит к краху

Еще проблема-одна клетка не в отдельном xib, так что я не могу вручную создать временные и использовать ее для расчета высоты.

Любые решения для этого?

public func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {    var cell = collectionView.dequeueReusableCellWithReuseIdentifier(cellIdentifier, forIndexPath: indexPath) as UICollectionViewCell    configureCell(cell, item: items[indexPath.row])    cell.contentView.setNeedsLayout()    cell.contentView.layoutIfNeeded()    return cell.contentView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)}
EDIT:

Сбой происходит, как только dequeueReusableCellWithReuseIdentifier называется. Если я не называю этот метод и вместо того, чтобы вернуть размер все отлично работает и без клетки вычисленный размер

отрицательные или нулевые размеры не поддерживаются в потоке макет

2015-01-26 18:24:34.231 [13383:9752256] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 .. 0]'*** First throw call stack:(    0   CoreFoundation                      0x00000001095aef35 __exceptionPreprocess + 165    1   libobjc.A.dylib                     0x0000000109243bb7 objc_exception_throw + 45    2   CoreFoundation                      0x0000000109499f33 -[__NSArrayM objectAtIndex:] + 227    3   UIKit                               0x0000000107419d9c -[UICollectionViewFlowLayout _getSizingInfos] + 842    4   UIKit                               0x000000010741aca9 -[UICollectionViewFlowLayout _fetchItemsInfoForRect:] + 526    5   UIKit                               0x000000010741651f -[UICollectionViewFlowLayout prepareLayout] + 257    6   UIKit                               0x000000010742da10 -[UICollectionViewData _prepareToLoadData] + 67    7   UIKit                               0x00000001074301c6 -[UICollectionViewData layoutAttributesForItemAtIndexPath:] + 44    8   UIKit                               0x00000001073fddb1 -[UICollectionView _dequeueReusableViewOfKind:withIdentifier:forIndexPath:viewCategory:] + 248    9                                       0x00000001042b824c _TFC1228BasePaginatingViewController14collectionViewfS0_FTCSo16UICollectionView6layoutCSo22UICollectionViewLayout22sizeForItemAtIndexPathCSo11NSIndexPath_VSC6CGSize + 700    10                                     0x00000001042b83d4 _TToFC1228BasePaginatingViewController14collectionViewfS0_FTCSo16UICollectionView6layoutCSo22UICollectionViewLayout22sizeForItemAtIndexPathCSo11NSIndexPath_VSC6CGSize + 100    11  UIKit                               0x0000000107419e2e -[UICollectionViewFlowLayout _getSizingInfos] + 988    12  UIKit                               0x000000010741aca9 -[UICollectionViewFlowLayout _fetchItemsInfoForRect:] + 526    13  UIKit                               0x000000010741651f -[UICollectionViewFlowLayout prepareLayout] + 257    14  UIKit                               0x000000010742da10 -[UICollectionViewData _prepareToLoadData] + 67    15  UIKit                               0x000000010742e0e9 -[UICollectionViewData validateLayoutInRect:] + 54    16  UIKit                               0x00000001073f67b8 -[UICollectionView layoutSubviews] + 170    17  UIKit                               0x0000000106e3c973 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 521    18  QuartzCore                          0x0000000106b0fde8 -[CALayer layoutSublayers] + 150    19  QuartzCore                          0x0000000106b04a0e _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 380    20  QuartzCore                          0x0000000106b0487e _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24    21  QuartzCore                          0x0000000106a7263e _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 242    22  QuartzCore                          0x0000000106a7374a _ZN2CA11Transaction6commitEv + 390    23  QuartzCore                          0x0000000106a73db5 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 89    24  CoreFoundation                      0x00000001094e3dc7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23    25  CoreFoundation                      0x00000001094e3d20 __CFRunLoopDoObservers + 368    26  CoreFoundation                      0x00000001094d9b53 __CFRunLoopRun + 1123    27  CoreFoundation                      0x00000001094d9486 CFRunLoopRunSpecific + 470    28  GraphicsServices                    0x000000010be869f0 GSEventRunModal + 161    29  UIKit                               0x0000000106dc3420 UIApplicationMain + 1282    30                                      0x000000010435c709 main + 169    31  libdyld.dylib                       0x000000010a0f2145 start + 1)libc++abi.dylib: terminating with uncaught exception of type NSException