我设法找出the approach for self-sizing collection view cells under iOS 8。
我想将此作为附件视图的一部分。
我崩溃了......堆栈跟踪的有趣部分如下:
** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
*** First throw call stack:
(
0 CoreFoundation __exceptionPreprocess + 165
1 libobjc.A.dylib objc_exception_throw + 45
2 CoreFoundation -[__NSArrayM insertObject:atIndex:] + 954
3 UIKit -[UICollectionViewFlowLayout layoutAttributesForElementsInRect:] + 384
4 UIKit __45-[UICollectionViewData validateLayoutInRect:]_block_invoke + 144
5 UIKit -[UICollectionViewData validateLayoutInRect:] + 1396
6 UIKit -[UICollectionView layoutSubviews] + 170
7 UIKit -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 521
8 QuartzCore -[CALayer layoutSublayers] + 150
9 QuartzCore _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 380
10 UIKit -[UIView(Hierarchy) layoutBelowIfNeeded] + 611
11 UIKit -[UIInputSetHostView layoutIfNeeded] + 105
12 UIKit __43-[UIInputWindowController setInputViewSet:]_block_invoke + 112
13 UIKit +[UIView(Animation) performWithoutAnimation:] + 65
14 UIKit -[UIInputWindowController setInputViewSet:] + 291
15 UIKit -[UIInputWindowController performOperations:withAnimationStyle:] + 50
16 UIKit -[UIPeripheralHost(UIKitInternal) setInputViews:animationStyle:] + 1054
17 UIKit -[UIResponder becomeFirstResponder] + 468
18 UIKit -[UIView(Hierarchy) becomeFirstResponder] + 99
19 UIKit -[UITextView becomeFirstResponder] + 75
...
这看起来像是一个Apple bug。为什么布局似乎返回一个空的布局属性?
答案 0 :(得分:1)
到目前为止,我最好的想法是基于此存储库:https://github.com/algal/SelfSizingCellsDemo
在ViewController.swift的第50行,我们有label.preferredMaxLayoutWidth = 320
,它产生一个填充整个屏幕的单元格,如果有足够的文本则包装行。这需要更改以适合您正在使用的任何大小的屏幕。然后在每个部分之后,您需要添加足够的文本来填充该标签,就像在第20行let items = smallitems.componentsSeparatedByString(" ") + [onelongitem]
上完成的那样
这种方法的问题在于,除了文本之外,我还不知道如何在该单元格中添加不同的视图。这可能适用于您的情况。