對于UICollectionView各個cell的高度因為內(nèi)容不同的時候蛔翅,不能設(shè)置固定的size,而如何使其自適應(yīng)高度哎迄,網(wǎng)絡(luò)上的資料并不是很多谭贪,這可能是引起大家還是用tableView比較多一些吧
下面就說一下我的解決方法
在自定義cell中加入如下代碼
- (UICollectionViewLayoutAttributes*)preferredLayoutAttributesFittingAttributes:(UICollectionViewLayoutAttributes*)layoutAttributes {
[self setNeedsLayout];
[self layoutIfNeeded];
CGSize size = [self.contentView systemLayoutSizeFittingSize: layoutAttributes.size];
CGRect cellFrame = layoutAttributes.frame;
cellFrame.size.height= size.height;
layoutAttributes.frame= cellFrame;
return layoutAttributes;
}
當(dāng)然你必須已經(jīng)在cell中加了相應(yīng)的約束,并且需要在layout中設(shè)置estimatedItemSize,設(shè)置的estimatedItemSize的width和約束的寬度最好一致阻桅。
這種方法對于同一種cell沒什么問題了凉倚,但若是多種cell,比如第一個是整個屏幕的寬度嫂沉,而其他的是屏幕寬度的一半或其他尺寸稽寒,你需要在每個cell中加上如上方法,然后使其左對齊(或者右對齊 居中)趟章。對齊方法有很多杏糙,可以參考這個 demo
這個問題以前解決過,現(xiàn)在有人問到我蚓土,發(fā)現(xiàn)自己也記得不是很清楚宏侍,特此記錄一下。