iOS collectionView相册滑动

来源:互联网 发布:java页面导出excel 编辑:程序博客网 时间:2024/05/22 08:01

使用collectionView做一个简单的相册滑动demo


首先创建一个LineFlowLayout

LineFlowLayout.h


@interface LineFlowLayout : UICollectionViewFlowLayout


@end


-----------------------------------------------

#import "LineFlowLayout.h"


@implementation LineFlowLayout


//初始化时会调用

- (instancetype)init{

    if(self = [superinit]){

        self.itemSize =CGSizeMake(150,150);

        self.scrollDirection =UICollectionViewScrollDirectionHorizontal;

        self.minimumInteritemSpacing =50;

        self.minimumLineSpacing =50;

    }

    return self;

}


//UIcollectionView只要一滑动就会询问是否刷新界面

//刷新界面时会调用 layoutAttributesForElementsInRect方法

- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds{

    return YES;

}


- (NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect{

    

//    CGFloat centerX = self.collectionView.center.x;

    CGFloat screenCenterX =self.collectionView.contentOffset.x +self.collectionView.bounds.size.width * 0.5;

    //获得所有cell的属性

    NSArray *array = [superlayoutAttributesForElementsInRect:rect];

    

    for (UICollectionViewLayoutAttributes *attrsin array) {

        

        //ABS 取绝对值方法

        CGFloat offset = ABS(screenCenterX - attrs.center.x);

        offset = offset / 100;

        CGFloat scale =1.0 +0.5 * (1.0 - offset);

        //形变属性

        attrs.transform =CGAffineTransformMakeScale(scale, scale);

        

    }

    return array;

    

}


@end


然后就在viewController里调用
-----------------------------------------------

#import "ViewController.h"


#import "LineFlowLayout.h"


@interface ViewController ()<UICollectionViewDataSource>


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    

    LineFlowLayout *layout = [[LineFlowLayoutalloc]init];

    UICollectionView *collectionView = [[UICollectionViewalloc]initWithFrame:CGRectMake(0,200,self.view.frame.size.width,300)collectionViewLayout:layout];

    

    [self.viewaddSubview:collectionView];

    collectionView.dataSource =self;

    

    NSString *ID = @"cell";

    [collectionView registerClass:[UICollectionViewCellclass]forCellWithReuseIdentifier:ID];



    

}


#pragma mark -- UICollectionViewDataSource 数据源方法


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

    return 50;

}


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

    NSString *ID = @"cell";

    UICollectionViewCell *cell = [collectionViewdequeueReusableCellWithReuseIdentifier:IDforIndexPath:indexPath];

    cell.backgroundColor = [UIColorredColor];

    return cell;

}


@end





0 0