• UICollectionView 集合视图 的使用


    直接上代码:

    //
    //  RootViewController.m
    //
    //
    
    #import "RootViewController.h"
    #import "CollectionViewCell.h"
    
    
    @interface RootViewController ()<UICollectionViewDataSource, UICollectionViewDelegate>
    
    @property (nonatomic, retain) UICollectionView *collectionView ; // 集合视图
    
    
    @end
    
    
    
    @implementation RootViewController
    
    - (void)dealloc {
        [_collectionView release];
        [super dealloc];
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        // 1、在创建集合视图对象之前须要创建集合视图的布局类对象,用于对集合视图的单元格做布局。

    UICollectionViewFlowLayout *flowLayout = [[[UICollectionViewFlowLayout alloc] init] autorelease]; // 2、为相关属性 // 设置最小行间距 flowLayout.minimumLineSpacing = 5; // 设置最小列间距 flowLayout.minimumInteritemSpacing = 5; // 设置 itemSize flowLayout.itemSize = CGSizeMake((CGRectGetWidth(self.view.bounds) - 40) / 4, 120); // 设置分区的内边距 flowLayout.sectionInset = UIEdgeInsetsMake(5, 5, 5, 5); // 设置滑动方向,默认是纵向滑动。

    // flowLayout.scrollDirection = UICollectionViewScrollDirectionHorizontal; // 指定页眉大小 flowLayout.headerReferenceSize = CGSizeMake(200, 60); // 指定页脚大小 flowLayout.footerReferenceSize = CGSizeMake(200, 40); self.collectionView = [[[UICollectionView alloc] initWithFrame:self.view.bounds collectionViewLayout:flowLayout] autorelease]; // 须要制定代理对象 self.collectionView.dataSource = self; self.collectionView.delegate = self; // 加入集合视图显示 [self.view addSubview:self.collectionView]; // 为集合视图注冊单元格类型 [self.collectionView registerClass:[CollectionViewCell class] forCellWithReuseIdentifier:@"cell"]; // 为集合视图注冊页眉页脚的类型 [self.collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"header"]; [self.collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"footer"]; } // 为集合视图的每个分区指定 item 的数量 - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { return 100; } // 为集合视图的每个 Item 指定相应的单元格 - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { CollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath]; cell.titleLable.text = [NSString stringWithFormat:@"(%ld, %ld)", indexPath.section, indexPath.item]; // cell.backgroundColor = [UIColor colorWithRed:arc4random() % 256 / 255.0 green:arc4random() % 256 / 255.0 blue:arc4random() % 256 / 255.0 alpha:1]; return cell; } // 集合视图的页眉页脚视图使用的是 UICollectionReusableView 或其子类的对象,同一时候页眉页脚通过 kind 来区分。而且使用专门的重用机制。来完毕对页眉页脚视图的管理。 - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath { if ([kind isEqualToString:UICollectionElementKindSectionHeader]) { UICollectionReusableView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"header" forIndexPath:indexPath]; headerView.backgroundColor = [UIColor orangeColor]; return headerView; } UICollectionReusableView *footerView = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"footer" forIndexPath:indexPath]; footerView.backgroundColor = [UIColor redColor]; return footerView; } - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { UIViewController *viewController = [[UIViewController alloc] init]; [self.navigationController pushViewController:viewController animated:YES]; [viewController release]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } /* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */ @end

    
    //
    //  CollectionViewCell.h
    //
    //
    
    #import <UIKit/UIKit.h>
    
    @interface CollectionViewCell : UICollectionViewCell
    
    @property (nonatomic, retain) UILabel *titleLable ; //
    
    
    @end
    
    //
    //  CollectionViewCell.m
    //
    //
    
    #import "CollectionViewCell.h"
    
    @implementation CollectionViewCell
    
    - (void)dealloc {
        [_titleLable release];
        [super dealloc];
    }
    
    - (UILabel *)titleLable {
        if (!_titleLable) {
            self.titleLable = [[[UILabel alloc] initWithFrame:self.bounds] autorelease];
            _titleLable.backgroundColor = [UIColor lightGrayColor];
            _titleLable.textColor = [UIColor whiteColor];
            _titleLable.font = [UIFont systemFontOfSize:16];
            _titleLable.textAlignment = NSTextAlignmentCenter;
            [self.contentView addSubview:_titleLable];
        }
        return _titleLable;
    }
    
    @end
    
  • 相关阅读:
    我是一条内存[转]
    随机翻唱辑 [2006.8.18更新]
    CentOS NTFS 挂载
    grub备忘
    CentOS 使用163软件源
    被车撞了
    爱上苦瓜
    无聊的游戏
    今天去爬山了
    博客搬家了:www.sanv.org
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/7115367.html
Copyright © 2020-2023  润新知