集合视图 代码

 

 

#pragma mark - 设置自定义视图

- (void)loadView

{

    self.rootView = [[[RootView alloc] initWithFrame:[UIScreen mainScreen].bounds] autorelease];

    _rootView.backgroundColor = [UIColor redColor];

    self.view = _rootView;

}

 

- (void)viewDidLoad {

    [super viewDidLoad];

    

    // 设置数据源和代理

    self.rootView.collectionView.dataSource = self;

    self.rootView.collectionView.delegate = self;

 

    // collectionViewCell只能使用storyBoard(xib)或者注册使用

    [self.rootView.collectionView registerClass:[MyCollectionViewCell class] forCellWithReuseIdentifier:@"identifier"];

    // 注册头区和尾区

    [self.rootView.collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"header"];

    [self.rootView.collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"footer"];

}

#pragma mark - UICollectionViewDataSource Methods

#pragma mark 设置分区数

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView

{

    return 3;

}

 

#pragma mark 设置每个分区的个数

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section

{

    return 9;

}

 

#pragma mark 设置每个item上显示的内容

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

{

    // 1. 直接去重用队列中查找,如果没有的话,会自动帮我们创建

    MyCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"identifier" forIndexPath:indexPath];

    

    // 2. 使用

    cell.backgroundColor = [UIColor cyanColor];

    cell.label.text = [NSString stringWithFormat:@"%ld  %ld", indexPath.section, indexPath.row];

    

    // 3. 返回

    return cell;

}

 

 

#pragma mark 处理每个分区的头区和尾区

- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath

{

    // 对于集合视图(UICollectionView)来说,头区和尾区使用的是UICollectionReusableView类,而不是UIView,设置的时候,也需要使用重用机制

    // 使用kind去判断当前是显示头区还是尾区

    if ([kind isEqualToString:UICollectionElementKindSectionHeader]) {

        // 头区

        UICollectionReusableView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"header" forIndexPath:indexPath];

        headerView.backgroundColor = [UIColor whiteColor];

        return headerView;

    } else {

        // 尾区

        UICollectionReusableView *footerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"footer" forIndexPath:indexPath];

        footerView.backgroundColor = [UIColor redColor];

        return footerView;

    }

}

#pragma mark 处理item的点击

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

{

    NSLog(@"section:%ld  row:%ld", indexPath.section, indexPath.row);

}

 

 

- (void)addAllViews

{

    // 初始化集合视图

    // 1. 创建布局对象

    UICollectionViewFlowLayout *flowLayout = [UICollectionViewFlowLayout new];

    

    //属性

    // 设置每一个的大小

    flowLayout.itemSize = CGSizeMake(110, 100);

    // 设置左右的最小间距

    flowLayout.minimumInteritemSpacing = 5;

    // 设置上下的最小间距

    flowLayout.minimumLineSpacing = 5;

    // 滚动方向

    flowLayout.scrollDirection = UICollectionViewScrollDirectionVertical;

    // 设置头区大小

    flowLayout.headerReferenceSize = CGSizeMake(self.bounds.size.width, 20);

    // 设置尾区的大小

    flowLayout.footerReferenceSize = CGSizeMake(self.bounds.size.width, 20);

    // 设置边缘嵌入的值

    flowLayout.sectionInset = UIEdgeInsetsMake(5, 10, 5, 10);

    

    // 2. 使用布局,创建集合视图,

    self.collectionView = [[[UICollectionView alloc] initWithFrame:self.bounds collectionViewLayout:flowLayout] autorelease];

    

    [flowLayout release];

    

    

    [self addSubview:_collectionView];

    

    

}

 

 

- (instancetype)initWithFrame:(CGRect)frame

{

    self = [super initWithFrame:frame];

    if (self) {

        [self addAllViews];

        

        //自定义集合视图cell设置圆角

        self.layer.masksToBounds = YES;

        self.layer.cornerRadius = 15;

        

    }

    return self;

}

 

 

- (void)addAllViews

{

    self.label = [[[UILabel alloc] initWithFrame:CGRectMake(5, 5, 100, 30)] autorelease];

    _label.backgroundColor = [UIColor yellowColor];

    _label.layer.masksToBounds = YES;

    _label.layer.cornerRadius = 10;

    

    [self.contentView addSubview:_label];

}

posted @ 2015-03-05 11:07  mengxiangtong22  阅读(293)  评论(0编辑  收藏  举报