通过重写 - (CGSize)systemLayoutSizeFittingSize:(CGSize)targetSize
withHorizontalFittingPriority:(UILayoutPriority)horizontalFittingPriority
verticalFittingPriority:(UILayoutPriority)verticalFittingPriority 方法
cell是通过systemLayoutSizeFittingSize方法获取contentView高度,然后加上分割线高度得到cell的高度,因此重写此方法返回真实高度应该是最有效的
- (CGSize)systemLayoutSizeFittingSize:(CGSize)targetSize withHorizontalFittingPriority:(UILayoutPriority)horizontalFittingPriority verticalFittingPriority:(UILayoutPriority)verticalFittingPriority
{
// 先对bgview进行布局,这里需对bgView布局后collectionView宽度才会准确
self.bgView.frame =CGRectMake(0,0, targetSize.width,44);
[self.bgView layoutIfNeeded];
// 在对collectionView进行布局
self.collectionView.frame =CGRectMake(0,0, targetSize.width-MAGIN16*2,44);
[self.collectionView layoutIfNeeded];
// 由于这里collection的高度是动态的,这里cell的高度我们根据collection来计算
CGSizecollectionSize =self.collectionView.collectionViewLayout.collectionViewContentSize;
CGFloatcotentViewH = collectionSize.height + MAGIN16*2;
returnCGSizeMake([UIScreenmainScreen].bounds.size.width, cotentViewH);
}
网友评论