iOS中瀑布流的添加

嘿嘿,正要用到
原文地址:iOS中瀑布流的添加 作者:小果冻


1.添加系统框架QuartzCore.framework

2.添加三方类库(可能要遇到ARC问题,参见iOS中ARC和非ARC混编

3.在视图中添加瀑布流


 

#import

#import "EGORefreshTableHeaderView.h"

#import "EGORefreshTableFooterView.h"

@interface myViewController : UIViewController<</span>EGORefreshTableDelegate>

{

//EGOHeader

    EGORefreshTableHeaderView *_refreshHeaderView;

    //EGOFoot

    EGORefreshTableFooterView *_refreshFooterView;

    //

    BOOL _reloading;

}



@end




//

//  myViewController.m

//  Clothing

//

//  Created by 大超 on 13-9-12.

//  Copyright (c) 2013 x. All rights reserved.

//


#import "myViewController.h"


#import "TMQuiltView.h"


#import "TMPhotoQuiltViewCell.h"

#define IMAGENUM 13

@interface myViewController ()<</span>TMQuiltViewDataSource,TMQuiltViewDelegate>

{

TMQuiltView *qtmquitView;

}

@property (nonatomic, retain) NSMutableArray *images;


@end


@implementation myViewController


@synthesize images = _images;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {

        // Custom initialization

    }

    return self;

}


- (void)viewDidLoad

{

    [super viewDidLoad];

    // Do any additional setup after loading the view from its nib.

    self.navigationController.navigationBar.barStyle = UIBarStyleBlack;


    qtmquitView = [[TMQuiltView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];

qtmquitView.delegate = self;

qtmquitView.dataSource = self;

 

[self.view addSubview:qtmquitView];

 

[qtmquitView reloadData];

    [self createHeaderView];

[self performSelector:@selector(testFinishedLoadData) withObject:nil afterDelay:0.0f];


}



-(void)createHeaderView{

    if (_refreshHeaderView && [_refreshHeaderView superview]) {

        [_refreshHeaderView removeFromSuperview];

    }

_refreshHeaderView = [[EGORefreshTableHeaderView alloc] initWithFrame:

                          CGRectMake(0.0f, 0.0f - self.view.bounds.size.height,

                                     self.view.frame.size.width, self.view.bounds.size.height)];

    _refreshHeaderView.delegate = self;

    

[qtmquitView addSubview:_refreshHeaderView];

    

    [_refreshHeaderView refreshLastUpdatedDate];

}


-(void)testFinishedLoadData{

 

    [self finishReloadingData];

    [self setFooterView];

}


#pragma mark -

#pragma mark method that should be called when the refreshing is finished

- (void)finishReloadingData{

 

//  model should call this when its done loading

_reloading = NO;

    

if (_refreshHeaderView) {

        [_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:qtmquitView];

    }

    

    if (_refreshFooterView) {

        [_refreshFooterView egoRefreshScrollViewDataSourceDidFinishedLoading:qtmquitView];

        [self setFooterView];

    }

    

    // overide, the actula reloading tableView operation and reseting position operation is done in the subclass

}


-(void)setFooterView{

//    UIEdgeInsets test = self.aoView.contentInset;

    // if the footerView is nil, then create it, reset the position of the footer

    CGFloat height = MAX(qtmquitView.contentSize.height, qtmquitView.frame.size.height);

    if (_refreshFooterView && [_refreshFooterView superview])

{

        // reset position

        _refreshFooterView.frame = CGRectMake(0.0f,

                                              height,

                                              qtmquitView.frame.size.width,

                                              self.view.bounds.size.height);

    }else

{

        // create the footerView

        _refreshFooterView = [[EGORefreshTableFooterView alloc] initWithFrame:

                              CGRectMake(0.0f, height,

                                         qtmquitView.frame.size.width, self.view.bounds.size.height)];

        _refreshFooterView.delegate = self;

        [qtmquitView addSubview:_refreshFooterView];

    }

    

    if (_refreshFooterView)

{

        [_refreshFooterView refreshLastUpdatedDate];

    }

}



-(void)removeFooterView

{

    if (_refreshFooterView && [_refreshFooterView superview])

{

        [_refreshFooterView removeFromSuperview];

    }

    _refreshFooterView = nil;

}


//===============

//刷新delegate

#pragma mark -

#pragma mark data reloading methods that must be overide by the subclass


-(void)beginToReloadData:(EGORefreshPos)aRefreshPos{

 

//  should be calling your tableviews data source model to reload

_reloading = YES;

    

    if (aRefreshPos == EGORefreshHeader)

{

        // pull down to refresh data

        [self performSelector:@selector(refreshView) withObject:nil afterDelay:2.0];

    }else if(aRefreshPos == EGORefreshFooter)

{

        // pull up to load more data

        [self performSelector:@selector(getNextPageView) withObject:nil afterDelay:2.0];

    }

 

// overide, the actual loading data operation is done in the subclass

}


//刷新调用的方法

-(void)refreshView

{

NSLog(@"刷新完成");

    [self testFinishedLoadData];

 

}

//加载调用的方法

-(void)getNextPageView

{

for(int i = 0; i < IMAGENUM; i++) {

[_images addObject:[NSString stringWithFormat:@"%d.jpeg", i % IMAGENUM + 1]];

}

[qtmquitView reloadData];

    [self removeFooterView];

    [self testFinishedLoadData];

}


#pragma mark -

#pragma mark UIScrollViewDelegate Methods


- (void)scrollViewDidScroll:(UIScrollView *)scrollView{

if (_refreshHeaderView)

{

        [_refreshHeaderView egoRefreshScrollViewDidScroll:scrollView];

    }

 

if (_refreshFooterView)

{

        [_refreshFooterView egoRefreshScrollViewDidScroll:scrollView];

    }

}


- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{

if (_refreshHeaderView)

{

        [_refreshHeaderView egoRefreshScrollViewDidEndDragging:scrollView];

    }

 

if (_refreshFooterView)

{

        [_refreshFooterView egoRefreshScrollViewDidEndDragging:scrollView];

    }

}



#pragma mark -

#pragma mark EGORefreshTableDelegate Methods


- (void)egoRefreshTableDidTriggerRefresh:(EGORefreshPos)aRefreshPos

{

 

[self beginToReloadData:aRefreshPos];

 

}


- (BOOL)egoRefreshTableDataSourceIsLoading:(UIView*)view{

 

return _reloading; // should return if data source model is reloading

 

}



// if we don't realize this method, it won't display the refresh timestamp

- (NSDate*)egoRefreshTableDataSourceLastUpdated:(UIView*)view

{

 

return [NSDate date]; // should return date data source was last changed

 

}


- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


- (NSMutableArray *)images

{

    if (!_images)

{

        NSMutableArray *imageNames = [NSMutableArray array];

        for(int i = 0; i < IMAGENUM; i++) {

            [imageNames addObject:[NSString stringWithFormat:@"%d.jpeg", i % IMAGENUM + 1]];

        }

        _images = imageNames ;

    }

    return _images;

}



- (UIImage *)imageAtIndexPath:(NSIndexPath *)indexPath {

    return [UIImage imageNamed:[self.images objectAtIndex:indexPath.row]];

}


- (NSInteger)quiltViewNumberOfCells:(TMQuiltView *)TMQuiltView {

    return [self.images count];

}


- (TMQuiltViewCell *)quiltView:(TMQuiltView *)quiltView cellAtIndexPath:(NSIndexPath *)indexPath {

    TMPhotoQuiltViewCell *cell = (TMPhotoQuiltViewCell *)[quiltView dequeueReusableCellWithReuseIdentifier:@"PhotoCell"];

    if (!cell) {

        cell = [[TMPhotoQuiltViewCell alloc] initWithReuseIdentifier:@"PhotoCell"];

    }

    

    cell.photoView.image = [self imageAtIndexPath:indexPath];

    cell.titleLabel.text = [NSString stringWithFormat:@"%d", indexPath.row];

    return cell;

}


#pragma mark - TMQuiltViewDelegate


- (NSInteger)quiltViewNumberOfColumns:(TMQuiltView *)quiltView {

 

    

    if ([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeLeft

        || [[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeRight)

{

        return 3;

    } else {

        return 2;

    }

}


- (CGFloat)quiltView:(TMQuiltView *)quiltView heightForCellAtIndexPath:(NSIndexPath *)indexPath

{

    return [self imageAtIndexPath:indexPath].size.height / [self quiltViewNumberOfColumns:quiltView];

}



//点击某个图片显示响应的indexPath.row

- (void)quiltView:(TMQuiltView *)quiltView didSelectCellAtIndexPath:(NSIndexPath *)indexPath

{

NSLog(@"index:%d",indexPath.row);

}


@end


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值