UI-瀑布流的做法!

来源:互联网 发布:linux tomcat下载32位 编辑:程序博客网 时间:2024/04/28 15:20

UI-瀑布流的做法!



//在MainViewController.h文件中定义三个放在self.view上的三个Label变量;

@interface MainViewController :UIViewController<UITableViewDataSource,UITableViewDelegate>

{

    UITableView *_leftTable;

    UITableView *_centerTable;

    UITableView *_rightTable;

    NSMutableArray *_imageArray;

}

@end



//在MainViewController.m文件中初始化_imageArray(添加图片数量的数组);

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

{

   self = [superinitWithNibName:nibNameOrNil bundle:nibBundleOrNil];

   if (self) {

        // Custom initialization

       _imageArray = [[NSMutableArrayalloc] init];

       for (int i =1; i < 20; i++) {

            NSAutoreleasePool *pool = [[NSAutoreleasePoolalloc] init];//自动释放池

            

           NSString *name = [NSStringstringWithFormat:@"%d.jpg",i];

            [_imageArrayaddObject:name];

            [pooldrain];

        }

    }

    returnself;

}

//定义Label,根据_imageArray数量决定的line和row,设定Label的大小位置;

- (void)viewDidLoad

{

    [superviewDidLoad];

// Do any additional setup after loading the view.

    _leftTable = [[UITableViewalloc] initWithFrame:CGRectMake(0,20, 320.0/3,500) style:UITableViewStylePlain];

    [_leftTablesetDelegate:self];

    [_leftTablesetDataSource:self];

    [self.viewaddSubview:_leftTable];

    [_leftTablerelease];

    

    _centerTable = [[UITableViewalloc] initWithFrame:CGRectMake(320/3,20, 320/3,500) style:UITableViewStylePlain];

    [_centerTablesetDelegate:self];

    [_centerTablesetDataSource:self];

    [self.viewaddSubview:_centerTable];

    [_centerTablerelease];

    

    _rightTable = [[UITableViewalloc] initWithFrame:CGRectMake(320/3*2,20, 320/3,500) style:UITableViewStylePlain];

    [_rightTablesetDelegate:self];

    [_rightTablesetDataSource:self];

    [self.viewaddSubview:_rightTable];

    [_rightTablerelease];

    

}


#pragma mark -

#pragma mark TableView Delegate


-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

   NSInteger index = indexPath.row *3;

   if (_centerTable == tableView) {

        index++;

    }

   if (_rightTable == tableView) {

        index +=2;

    }

   NSString *name = [_imageArrayobjectAtIndex:index];

   UIImage *aImage = [UIImageimageNamed:name];

   CGSize size = aImage.size;

    

   CGFloat scale = size.width/(320/3);

    

   CGFloat height = size.height/scale;

    

   return height;

}


-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

   NSInteger count = [_imageArraycount]/3;

   NSInteger value = [_imageArraycount]%3;

   if (_leftTable == tableView) {

        

       if (value>0 ) {

            count++;

        }

    }

   if (_centerTable == tableView) {

       if (value>1) {

            count ++;

        }

    }

   return count;

}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

   static NSString *cellIdentify =@"cellIdentify";

   TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentify];

   if (!cell) {

        cell = [[[TableViewCellalloc] initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:cellIdentify] autorelease];

    }

   NSInteger index = indexPath.row *3;

   if (_centerTable == tableView) {

        index++;

    }

   if (_rightTable == tableView) {

        index +=2;

    }

   NSString *name = [_imageArrayobjectAtIndex:index];

   NSLog(@"图片之前");

    [cell.waterFallImagesetImage:[UIImageimageNamed:name]];

   NSLog(@"图片之后");

   return cell;

}


#pragma mark -

#pragma mark scrollviewdelegate


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

    //    NSLog(@"scrollview === %@",scrollView);

    

    _leftTable.contentOffset = scrollView.contentOffset;

    _centerTable.contentOffset = scrollView.contentOffset;

    _rightTable.contentOffset = scrollView.contentOffset;

}


- (void)didReceiveMemoryWarning

{

    [superdidReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


@end


//在TableViewCell.h文件中定义waterFallImage的属性变量

@interface TableViewCell : UITableViewCell


@property (nonatomic,retain)UIImageView *waterFallImage;


@end


//在TableViewCell.m文件中设置每个row的规格

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

{

    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];

    if (self) {

        // Initialization code

        self.waterFallImage = [[UIImageViewalloc] initWithFrame:CGRectMake(0,0, 320/3,200)];

        [self.contentViewaddSubview:_waterFallImage];

        [_waterFallImagerelease];

    }

    return self;

}


-(void)layoutSubviews{

    [superlayoutSubviews];

    NSLog(@"%s",__func__);

    CGSize size = self.waterFallImage.image.size;

    

    //设置waterFallImage的坐标,宽,高

    CGFloat scale = size.width/(320/3);

    CGFloat height = size.height/scale;

    [self.waterFallImagesetFrame:CGRectMake(0,0, 320/3, height)];

    

}


- (void)setSelected:(BOOL)selected animated:(BOOL)animated

{

    [supersetSelected:selected animated:animated];

    

    // Configure the view for the selected state

}


@end






0 0
原创粉丝点击