UICollectionView具有变量itemsize和多个部分

时间:2015-02-05 10:15:57

标签: ios uicollectionview

如何使用UICollectionView实现图像中显示的布局? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

第一: - 您必须为部分创建 UICollectionReusableView类: 例如:ReusableView.h

@interface ReusableView : UICollectionReusableView
@property (weak, nonatomic) IBOutlet UIImageView *headerImage; // example of header content
@end

ReusableView.m

@implementation ReusableView
- (void)awakeFromNib {

// Initialization code
}
@end

-in ReusableView.xib你必须删除默认视图并从ObjectLibrary中添加UICollectionReusableView,然后你添加你的图像或标签,或者在AttributeInspector中你必须写下你的IdentifierName标识符(你需要做同样的事情)对于细胞)

  • 对于单元格,您必须使用 UICollectionTableViewCell类,并按照UICollectionReusableView中的相同步骤进行操作。

第二

    ViewController.h中的
  • 您必须使用一些代理:UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout>

  • 在ViewController.m中
  • 你必须从委托中使用这个方法,但首先在viewDidLoad方法中你必须实现这个:

    [yourCollectionView registerNib:[UINib nibWithNibName:@"ReusableView" bundle:nil] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"CollectionReusable"]; //collection identifier is: @"CollectionReusable"
    
    [yourCollectionView registerNib: [UINib nibWithNibName:@"CollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"CollectionCell"];
    
  • 对于部分,您必须从委托实施此方法:

    - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section
    {
    return CGSizeZero;
    }
    
    - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section; // here you return number of sections 
    
    
    
    - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
    

    { headerView = nil;

    headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@“CollectionReusable”forIndexPath:indexPath];

    [headerView.headerImage setImage:[UIImage imageNamed:[listOfSymbolsObjects objectAtIndex:indexPath.section]]];

    return headerView;
    

    }

- 对于单元,您必须从委托实现此方法:

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView;

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath;

希望它对你有所帮助! :)