zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Jser 设计模式系列之面向对象
    jQuery 2.0.3 源码分析 回溯魔法 end()和pushStack()
    jQuery 2.0.3 源码分析 数据缓存
    jQuery 2.0.3 源码分析 Deferred(最细的实现剖析,带图)
    jQuery 2.0.3 源码分析 Deferred概念
    jQuery 2.0.3 源码分析 回调对象
    试试看 ? 离奇古怪的javascript题目
    jQuery 2.0.3 源码分析Sizzle引擎
    设计模式之美:Memento(备忘录)
    设计模式之美:Mediator(中介者)
  • 原文地址:https://www.cnblogs.com/lidongq/p/3929907.html
Copyright © 2011-2022 走看看