首页 > 代码库 > photoWall自定义
photoWall自定义
- (instancetype)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { _scrollView = [[UIScrollView alloc] initWithFrame:self.bounds]; [self addSubview:_scrollView]; _cellArray = [NSMutableArray array]; _numberOfColumns = 4; _spacing=5; _edgeInset=UIEdgeInsetsMake(20, 0, 20, 0); } return self;}- (void)reloadData{ //重新加载数据前需要将老数据清理掉 //获取视图(小格子)的个数 NSInteger count = [_dataSource numberOfViewInPhotoWall:self]; CGFloat width = self.bounds.size.width / _numberOfColumns; CGFloat height = 44.0f; if (_dataSource && [_dataSource respondsToSelector:@selector(photoWall:cellHeightAtIndex:)]) { } //计算滚动视图的大小(有问题,自己算..... 高度不对) int heiCount; if(count%_numberOfColumns) { heiCount=count/_numberOfColumns+1; } else { heiCount=count/_numberOfColumns; } _scrollView.contentInset=_edgeInset; _scrollView.contentSize = CGSizeMake(_scrollView.frame.size.width,heiCount * height); //总数与index相差1 for (NSInteger i = 0; i < count; i++) { MyPhotoWallCell *cell = [_dataSource photoWall:self cellAtIndex:i]; [cell addTarget:self action:@selector(didClicked:) forControlEvents:UIControlEventTouchUpInside]; cell.tag = i; if (_dataSource&&[_dataSource respondsToSelector:@selector(photoWall:cellHeightAtIndex:)]) { height = [_dataSource photoWall:self cellHeightAtIndex:i]; } CGFloat y = (i / _numberOfColumns) * height; NSLog(@"%f--%f", width * i, y); cell.frame = CGRectMake(width * (i % _numberOfColumns), y, width-_spacing, height-_spacing); [_scrollView addSubview:cell]; }}- (void)didClicked:(MyPhotoWallCell *)sender{ if (_delegate && [_delegate respondsToSelector:@selector(photoWall:didSelectedIndex:)]) { [_delegate photoWall:self didSelectedIndex:sender.tag]; }}//// ViewController.m// MyCustomPhotoWall//// Created by apple on 14-8-22.// Copyright (c) 2014年 戴维营教育. All rights reserved.//#import "ViewController.h"#import "MyPhotoWallCell.h"#import "MyPhotoWall.h"@interface ViewController () <MyPhotoWallDataSource, MyPhotoWallDelegate>@end@implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; MyPhotoWall *photoWall = [[MyPhotoWall alloc] initWithFrame:CGRectMake(10, 10, 300, 460)]; photoWall.backgroundColor = [UIColor redColor]; photoWall.dataSource = self; photoWall.delegate = self; [self.view addSubview:photoWall]; [photoWall reloadData];}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}- (NSInteger)numberOfViewInPhotoWall:(MyPhotoWall *)photoWall{ return 100;}- (CGFloat)photoWall:(MyPhotoWall *)photoWall cellHeightAtIndex:(NSInteger)index{ if (index%2) { return 94; } else { return 55; } }- (MyPhotoWallCell *)photoWall:(MyPhotoWall *)photoWall cellAtIndex:(NSInteger)index{ MyPhotoWallCell *cell = [[MyPhotoWallCell alloc] init]; if (index % 3) { cell.backgroundColor = [UIColor purpleColor]; } else if (index % 2) { cell.backgroundColor = [UIColor magentaColor]; } else { cell.backgroundColor = [UIColor cyanColor]; } // if (index % 2) {// cell.backgroundColor = [UIColor purpleColor];// }// else {// cell.backgroundColor = [UIColor cyanColor];// } return cell;}- (void)photoWall:(MyPhotoWall *)photoWall didSelectedIndex:(NSInteger)index{ NSLog(@"Selected: %d", index);}@end
photoWall自定义
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。