UICollectionView-XYTemplateLayoutCell
A custom templateLayoutCell for UICollectionView
题记
在揣摩了forkingdog的FDTemplateLayoutCell后,突然发现UICollectionView没有一套计算cell高度的方法,所以依葫芦画瓢画出了这个
简介
Template auto layout cell for automatically UICollectionViewCell height calculating.
如何使用
####Use in UICollectionViewCell:
- fixed width
#import "UICollectionView+XYTemplateLayoutCell.h"
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
return [collectionView xy_getCellSizeForIdentifier:@"your identifier" width:width config:^(id cell) {
/*设置cell的数据*/
}];
}
- fixed height
#import "UICollectionView+XYTemplateLayoutCell.h"
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
return [collectionView xy_getCellSizeForIdentifier:@"your identifier" height:height config:^(id cell) {
/*设置cell的数据*/
}];
}
- dynamic size
#import "UICollectionView+XYTemplateLayoutCell.h"
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
return [collectionView xy_getCellSizeForIdentifier:@"your identifier" config:^(id cell) {
/*设置cell的数据*/
}];
}
Use in UICollectionReusableView:
- fixed width
#import "UICollectionView+XYTemplateReusableView.h"
//这里以Header为例
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section{
return [collectionView xy_getReusableViewSizeForIdentifier:@"your identifier" width:width config:^(id reusableView) {
/*设置header的数据*/
}];
}
- fixed height
#import "UICollectionView+XYTemplateReusableView.h"
//这里以Header为例
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section{
return [collectionView xy_getReusableViewSizeForIdentifier:@"your identifier" height:height config:^(id reusableView) {
/*设置header的数据*/
}];
}
- dynamic size
#import "UICollectionView+XYTemplateReusableView.h"
//这里以Header为例
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section{
return [collectionView xy_getReusableViewSizeForIdentifier:@"your identifier" config:^(id reusableView) {
/*设置header的数据*/
}];
}
缓存cell的size的API
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
return [collectionView xy_getCellSizeForIdentifier:@"your identifier" width:ScreenW cacheByIndexPath:indexPath config:^(id cell) {
//config
}];
}
缓存Header/Footer的size的API
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section{
return [collectionView xy_getReusableViewSizeForIdentifier:@"your identifier" width:width cacheBySection:section config:^(id reusableView) {
//config
}];
}
Release Versions
-
v1.1 add dynamic size
-
v1.0 support to caculate size for UICollectionView Cell