zoukankan      html  css  js  c++  java
  • iOS UI基础-19.0 UICollectionView

    直接上代码,说明请看注释吧

    1.继承三个代理 UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout

    2.直接看代码

    #import "ViewController.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        
        //确定是水平滚动,还是垂直滚动
        UICollectionViewFlowLayout *flowLayout=[[UICollectionViewFlowLayout alloc] init];
        [flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical];
       // 可以不使用flowLayout 代理,直接像下面这样给值
        //[flowLayout setMinimumLineSpacing:0]; // 底部空白清空
        //[flowLayout setMinimumInteritemSpacing:0]; // 左右空白清空
        //flowLayout.sectionInset = UIEdgeInsetsMake(0, 0, 8, 0); // 定义每个的margin
            
        self.collectionView=[[UICollectionView alloc] initWithFrame:CGRectMake(0, 64, 320, 200) collectionViewLayout:flowLayout];
        self.collectionView.dataSource=self;
        self.collectionView.delegate=self;
        [self.collectionView setBackgroundColor:[UIColor clearColor]];
        
        //注册Cell,必须要有
        [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"UICollectionViewCell"];
        
        [self.view addSubview:self.collectionView];
    }
    
    
    #pragma mark -- UICollectionViewDataSource
    
    //定义展示的UICollectionViewCell的个数
    -(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
    {
        return 10;
    }
    
    //定义展示的Section的个数
    -(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
    {
        return 2;
    }
    
    //每个UICollectionView展示的内容
    -(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString * CellIdentifier = @"UICollectionViewCell";
        UICollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
        
        cell.backgroundColor = [UIColor colorWithRed:((10 * indexPath.row) / 255.0) green:((20 * indexPath.row)/255.0) blue:((30 * indexPath.row)/255.0) alpha:1.0f];
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 20, 20)];
        label.textColor = [UIColor redColor];
        label.text = [NSString stringWithFormat:@"%d",indexPath.row];
     
        for (id subView in cell.contentView.subviews) {
            [subView removeFromSuperview];
        }
        [cell.contentView addSubview:label];
        return cell;
    }
    
    #pragma mark --UICollectionViewDelegateFlowLayout
    
    //定义每个Item 的大小
    - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
    {
        return CGSizeMake(60, 60);
    }
    
    //定义每个UICollectionView 的 margin
    -(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
    {
        return UIEdgeInsetsMake(5, 5, 5, 5);
    }
    
    #pragma mark --UICollectionViewDelegate
    
    //UICollectionView被选中时调用的方法
    -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
    {
        UICollectionViewCell * cell = (UICollectionViewCell *)[collectionView cellForItemAtIndexPath:indexPath];
        //临时改变个颜色,看好,只是临时改变的。如果要永久改变,可以先改数据源,然后在cellForItemAtIndexPath中控制。(和UITableView差不多吧!O(∩_∩)O~)
        cell.backgroundColor = [UIColor greenColor];
        NSLog(@"item======%d",indexPath.item);
        NSLog(@"row=======%d",indexPath.row);
        NSLog(@"section===%d",indexPath.section);
    }
    
    //返回这个UICollectionView是否可以被选择
    -(BOOL)collectionView:(UICollectionView *)collectionView shouldSelectItemAtIndexPath:(NSIndexPath *)indexPath
    {
        return YES;
    }
    
    @end

    快捷头部

            //定义每个UICollectionView 的大小
            flowLayout.itemSize = CGSizeMake((fDeviceWidth-20)/2, (fDeviceWidth-20)/2+50);
            //定义每个UICollectionView 横向的间距
            flowLayout.minimumLineSpacing = 5;
            //定义每个UICollectionView 纵向的间距
            flowLayout.minimumInteritemSpacing = 0;
            //定义每个UICollectionView 的边距距
            flowLayout.sectionInset = UIEdgeInsetsMake(0, 5, 5, 5);//上左下右

    参考博客:http://blog.csdn.net/u011439689/article/details/39551163?utm_source=tuicool&utm_medium=referral 

  • 相关阅读:
    hihocoder 1049 后序遍历
    hihocoder 1310 岛屿
    Leetcode 63. Unique Paths II
    Leetcode 62. Unique Paths
    Leetcode 70. Climbing Stairs
    poj 3544 Journey with Pigs
    Leetcode 338. Counting Bits
    Leetcode 136. Single Number
    Leetcode 342. Power of Four
    Leetcode 299. Bulls and Cows
  • 原文地址:https://www.cnblogs.com/jys509/p/5031466.html
Copyright © 2011-2022 走看看