iOS开发 -- UICollectionView(集合视图)

UICollectionView 是一个新型的展示数据的视图,他和TableView一样 使用起来一样 都需要设置dataSource 和 delegate 只不过collectionView对应cell的设置比较复杂 可以实现很炫的效果

注意:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];

//LineLayout是第三方的封装好的类
    LineLayout *layout = [[LineLayout alloc]init];

    //在使用UICollectionViewController时候 在创建初始时候就需要给定一个布局对象

    ROOTViewController *rootVC = [[[ROOTViewController alloc]initWithCollectionViewLayout:layout]autorelease];

    UINavigationController *naVC = [[[UINavigationController alloc]initWithRootViewController:rootVC]autorelease];

    self.window.rootViewController = naVC;

    return YES;
}

代码举例:

#import "RootViewController.h"
#import "MyCell.h"
#import "MyHeader.h"

@interface RootViewController ()<UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>
@end

@implementation RootViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    //设置title
    self.navigationItem.title = @"集合视图";
    //布局UICollectionView
    [self layoutCollectionView];
}
-(void)layoutCollectionView{
    //创建布局对象
    UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc]init];
//    //设置cell大小
//    layout.itemSize = CGSizeMake(90, 120);
//    //设置上下间距
//    layout.minimumLineSpacing = 23;
//    //设置左右间距
//    layout.minimumInteritemSpacing =75/5;
//

//    //设置距离屏幕边缘的边距
//    layout.sectionInset = UIEdgeInsetsMake(33, 20, 50, 30);
//    //设置滚动方向
//    layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;  //水平滚动

    //1 创建控件对象  创建初始必须给定义cell布局对象
    UICollectionView *collectionView = [[UICollectionView alloc]initWithFrame:self.view.bounds collectionViewLayout:layout];
    //2 配置属性  collectionView默认背景颜色是黑色
    collectionView.backgroundColor = [UIColor cyanColor];

    //3 添加父视图
    [self.view addSubview:collectionView];
    //4 释放所有权
    [collectionView release];

    //设置代理
    collectionView.delegate = self;
    //设置数据源
    collectionView.dataSource = self;

    //注册cell

//不用xib  [collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cell"];
//用xib
    [collectionView registerNib:[UINib nibWithNibName:@"MyCell" bundle:[NSBundle mainBundle]] forCellWithReuseIdentifier:@"cell"];

    //注册页眉
//不用xib [collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"header"];
//     //注册页脚
//  [collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"footer"];

 //用xib
    [collectionView registerNib:[UINib nibWithNibName:@"MyHeader" bundle:[NSBundle mainBundle]] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"header"];
    [collectionView registerNib:[UINib nibWithNibName:@"MyHeader" bundle:[NSBundle mainBundle]] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"footer"];
}
#pragma mark -- UICollectionViewDataSource UICollectionViewDelegate
//分区数
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
    return 5;
}
//行数(Item  数)
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
    return 15;
}
//设置cell
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
    MyCell *cell =  [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
    cell.backgroundColor = [UIColor purpleColor];
    //赋值
    cell.textLB.text = [NSString stringWithFormat:@"S:%ld R:%ld",indexPath.section,indexPath.row];
    cell.pic_imageView.image = [UIImage imageNamed:@"yyy.jpg"];

    return cell;
}

//设置页眉 页脚
-(UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath{
    UICollectionReusableView *resuableView = nil;

    if ([kind isEqualToString:UICollectionElementKindSectionHeader]) {
        //获取header
    resuableView = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"header" forIndexPath:indexPath];
        resuableView.backgroundColor = [UIColor brownColor];

        ((MyHeader *)resuableView).titleLB.text = [NSString stringWithFormat:@"第%ld分区",indexPath.section];

    }else if ([kind isEqualToString:UICollectionElementKindSectionFooter]){
    //获取footer
        resuableView = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"footer" forIndexPath:indexPath];
        resuableView.backgroundColor = [UIColor redColor];
    }
    return resuableView;

}
#pragma  mark - UICollectionViewDelegateFlowLayout
//item 大小
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
    return CGSizeMake(90, 120);
}
//设置item 左右间距
-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section{
    return 105/4;
}

//设置距离屏幕边缘的边距
-(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{
    //UIEdgeInsetsMake 上左下右
//    if (section ==0) {
//        return UIEdgeInsetsMake(100, 20, 50, 20);
//    }
    return UIEdgeInsetsMake(50, 20, 50, 20);
}

//设置页眉大小
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section{
    return CGSizeMake(375, 50);
}
//设置页脚大小
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section{
    return CGSizeMake(375, 50);
}

@end
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值