使用第三方 : QuiltView  (可在cocoapods上找到)


.h 文件

#import <UIKit/UIKit.h>
#import "TMQuiltView.h"
#import "TMPhotoQuiltViewCell.h"


@interface SelfHomeViewController : UIViewController <TMQuiltViewDataSource,TMQuiltViewDelegate> {
}
@property(strong,nonatomic)TMQuiltView *quiltView;
@property(strong,nonatomic)NSArray *p_w_picpaths;
@end


.m 文件

主要代码:

#define kNumberOfCells           50


- (void)dealloc {
    [_quiltView release];
    _quiltView = nil;
    
    [_p_w_picpaths release];
    _p_w_picpaths = nil;
    [super dealloc];
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    _quiltView = [[TMQuiltView alloc] initWithFrame:self.view.bounds];
    _quiltView.dataSource = self;
    _quiltView.delegate = self;
    [self.view addSubview:_quiltView];
    
    [_quiltView reloadData];
}


#pragma mark - QuiltViewControllerDataSource

- (NSArray *)p_w_picpaths {
    if (!_p_w_picpaths) {
        NSMutableArray *p_w_picpathNames = [NSMutableArray array];
        for(int i = 0; i < kNumberOfCells; i++) {
            [p_w_picpathNames addObject:[NSString stringWithFormat:@"%d.jpeg", i % 10 + 1]];
        }
        _p_w_picpaths = [p_w_picpathNames retain];
    }
    return _p_w_picpaths;
}

- (UIImage *)p_w_picpathAtIndexPath:(NSIndexPath *)indexPath {
    return [UIImage p_w_picpathNamed:[self.p_w_picpaths objectAtIndex:indexPath.row]];
}

- (NSInteger)quiltViewNumberOfCells:(TMQuiltView *)TMQuiltView {
    return [self.p_w_picpaths count];
}

- (TMQuiltViewCell *)quiltView:(TMQuiltView *)quiltView cellAtIndexPath:(NSIndexPath *)indexPath {
    TMPhotoQuiltViewCell *cell = (TMPhotoQuiltViewCell *)[quiltView dequeueReusableCellWithReuseIdentifier:@"PhotoCell"];
    if (!cell) {
        cell = [[[TMPhotoQuiltViewCell alloc] initWithReuseIdentifier:@"PhotoCell"] autorelease];
    }
    
    cell.photoView.p_w_picpath = [self p_w_picpathAtIndexPath:indexPath];
    cell.titleLabel.text = [NSString stringWithFormat:@"%d", indexPath.row + 1];
    return cell;
}

#pragma mark - TMQuiltViewDelegate

- (NSInteger)quiltViewNumberOfColumns:(TMQuiltView *)quiltView {
    return 3;
}

- (CGFloat)quiltView:(TMQuiltView *)quiltView heightForCellAtIndexPath:(NSIndexPath *)indexPath {
    return [self p_w_picpathAtIndexPath:indexPath].size.height / [self quiltViewNumberOfColumns:quiltView];
}