首页 > 代码库 > 用tableView实现的一种加载数据的布局
用tableView实现的一种加载数据的布局
用tableView实现的一种加载数据的布局
此博文是应朋友之邀解决他的业务逻辑问题
效果:
素材:
源码:
ImageCell.h 与 ImageCell.m
//// ImageCell.h// TableView//// Created by YouXianMing on 15/2/1.// Copyright (c) 2015年 YouXianMing. All rights reserved.//#import <UIKit/UIKit.h>@interface ImageCell : UITableViewCell@end
//// ImageCell.m// TableView//// Created by YouXianMing on 15/2/1.// Copyright (c) 2015年 YouXianMing. All rights reserved.//#import "ImageCell.h"@implementation ImageCell- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, -72, 320, 72 * 2)]; imageView.image = [UIImage imageNamed:@"1"]; [self addSubview:imageView]; } return self;}@end
ViewController.m
//// ViewController.m// TableView//// Created by YouXianMing on 15/2/1.// Copyright (c) 2015年 YouXianMing. All rights reserved.//#import "ViewController.h"#import "ImageCell.h"#define CELL_FLAG @"Cell"#define IMAG_FLAG @"Imag"typedef enum : NSUInteger { SECTION_ONE = 0, SECTION_TWO, MAX_SECTION,} EViewController;@interface ViewController ()<UITableViewDataSource, UITableViewDelegate>@property (nonatomic, strong) UITableView *tableView;@property (nonatomic, strong) UIView *blockView;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; CGRect rect = self.view.bounds; rect.origin.y += 72; rect.size.height -= 72; self.tableView = [[UITableView alloc] initWithFrame:rect]; self.tableView.delegate = self; self.tableView.dataSource = self; self.tableView.layer.masksToBounds = NO; [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:CELL_FLAG]; [self.tableView registerClass:[ImageCell class] forCellReuseIdentifier:IMAG_FLAG]; [self.view addSubview:self.tableView]; self.blockView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 72)]; self.blockView.backgroundColor = [UIColor blackColor]; self.blockView.alpha = 0.f; [self.view addSubview:self.blockView];}#pragma mark scrollView位移- (void)scrollViewDidScroll:(UIScrollView *)scrollView { CGFloat offsetY = scrollView.contentOffset.y; CGFloat percent = offsetY / 72.f; if (percent <= 0) { percent = 0; } else if (percent >= 1) { percent = 1; } self.blockView.alpha = percent;}#pragma mark 每个区row的个数- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if (section == SECTION_ONE) { return 1; } else if (section == SECTION_TWO) { return 7; } else { return 0; }}#pragma mark 几个区- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return MAX_SECTION;}#pragma mark 重用cell- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.section == SECTION_ONE) { ImageCell *cell = [tableView dequeueReusableCellWithIdentifier:IMAG_FLAG]; return cell; } else if (indexPath.section == SECTION_TWO) { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CELL_FLAG]; return cell; } else { return nil; }}#pragma mark 返回headerView- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { if (section == SECTION_ONE) { return nil; } else if (section == SECTION_TWO) { UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 40)]; view.backgroundColor = [UIColor redColor]; return view; } else { return nil; }}#pragma mark row高度- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.section == SECTION_ONE) { return 72; } else if (indexPath.section == SECTION_TWO) { return 200; } else { return 0; }}#pragma mark header高度- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { if (section == SECTION_ONE) { return 0.f; } else if (section == SECTION_TWO) { return 40; } else { return 0; }}@end
用tableView实现的一种加载数据的布局
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。