iOS中瀑布流的添加

来源:互联网 发布:时光知味图片 编辑:程序博客网 时间:2024/05/29 16:57
嘿嘿,正要用到
原文地址: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 大超 on13-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


@implementationmyViewController


@synthesize images = _images;

- (id)initWithNibName:(NSString *)nibNameOrNilbundle:(NSBundle*)nibBundleOrNil

{

    self = [super initWithNibName:nibNameOrNilbundle:nibBundleOrNil];

    if (self) {

       // Custominitialization

    }

   return self;

}


- (void)viewDidLoad

{

   [superviewDidLoad];

   // Do any additional setup after loadingthe view from its nib.

   self.navigationController.navigationBar.barStyle = UIBarStyleBlack;


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

qtmquitView.delegate = self;

qtmquitView.dataSource = self;

 

[self.view addSubview:qtmquitView];

 

[qtmquitView reloadData];

   [selfcreateHeaderView];

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


}



-(void)createHeaderView{

   if(_refreshHeaderView&&[_refreshHeaderView superview]){

       [_refreshHeaderViewremoveFromSuperview];

    }

_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];

    

   [_refreshHeaderViewrefreshLastUpdatedDate];

}


-(void)testFinishedLoadData{

 

   [selffinishReloadingData];

   [selfsetFooterView];

}


#pragma mark -

#pragma mark method that should be called when the refreshing isfinished

- (void)finishReloadingData{

 

//  model should call this when its doneloading

_reloading = NO;

    

if (_refreshHeaderView) {

       [_refreshHeaderViewegoRefreshScrollViewDataSourceDidFinishedLoading:qtmquitView];

    }

    

   if(_refreshFooterView) {

       [_refreshFooterViewegoRefreshScrollViewDataSourceDidFinishedLoading:qtmquitView];

       [self setFooterView];

    }

    

   // overide, the actula reloadingtableView operation and reseting position operation is done in thesubclass

}


-(void)setFooterView{

//    UIEdgeInsets test =self.aoView.contentInset;

   // if the footerView is nil, then createit, 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 thefooterView

       _refreshFooterView= [[EGORefreshTableFooterViewalloc] initWithFrame:

                         CGRectMake(0.0f, height,

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

      _refreshFooterView.delegate = self;

       [qtmquitViewaddSubview:_refreshFooterView];

    }

    

   if(_refreshFooterView)

{

       [_refreshFooterViewrefreshLastUpdatedDate];

    }

}



-(void)removeFooterView

{

   if(_refreshFooterView&&[_refreshFooterView superview])

{

       [_refreshFooterViewremoveFromSuperview];

    }

   _refreshFooterView = nil;

}


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

//刷新delegate

#pragma mark -

#pragma mark data reloading methods that must be overide by thesubclass


-(void)beginToReloadData:(EGORefreshPos)aRefreshPos{

 

//  should be calling your tableviews data sourcemodel to reload

_reloading = YES;

    

    if (aRefreshPos == EGORefreshHeader)

{

       // pull down torefresh data

       [selfperformSelector:@selector(refreshView)withObject:nilafterDelay:2.0];

    }else if(aRefreshPos == EGORefreshFooter)

{

       // pull up to loadmore data

       [selfperformSelector:@selector(getNextPageView)withObject:nilafterDelay:2.0];

    }

 

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

}


//刷新调用的方法

-(void)refreshView

{

NSLog(@"刷新完成");

   [selftestFinishedLoadData];

 

}

//加载调用的方法

-(void)getNextPageView

{

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

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

}

[qtmquitView reloadData];

   [selfremoveFooterView];

   [selftestFinishedLoadData];

}


#pragma mark -

#pragma mark UIScrollViewDelegate Methods


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

if (_refreshHeaderView)

{

       [_refreshHeaderViewegoRefreshScrollViewDidScroll:scrollView];

    }

 

if (_refreshFooterView)

{

       [_refreshFooterViewegoRefreshScrollViewDidScroll:scrollView];

    }

}


- (void)scrollViewDidEndDragging:(UIScrollView *)scrollViewwillDecelerate:(BOOL)decelerate{

if (_refreshHeaderView)

{

       [_refreshHeaderViewegoRefreshScrollViewDidEndDragging:scrollView];

    }

 

if (_refreshFooterView)

{

       [_refreshFooterViewegoRefreshScrollViewDidEndDragging: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 isreloading

 

}



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

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

{

 

return [NSDatedate]; // should return date data source waslast changed

 

}


- (void)didReceiveMemoryWarning

{

   [superdidReceiveMemoryWarning];

   // Dispose of any resources that can berecreated.

}


- (NSMutableArray *)images

{

    if (!_images)

{

       NSMutableArray*imageNames = [NSMutableArrayarray];

       for(inti = 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.imagesobjectAtIndex: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 =[selfimageAtIndexPath: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)

{

       return3;

    } else {

       return2;

    }

}


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

{

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

}



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

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

{

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

}


@end


原创粉丝点击