tableView头部放scrollView滚动视图

来源:互联网 发布:林少华 知乎 编辑:程序博客网 时间:2024/06/11 15:11

开发思想 自定义UIView ,在UIView中添加scrollView,

使用场景 新闻首页滚动效果  so on

//

// BookViewController.m
// UITableViewCell定制

#import "BookViewController.h"
#import "BookModel.h"
#import "BookCell.h"
#import "ADView.h"
@interface BookViewController ()<UITableViewDataSource,UITableViewDelegate>
{
UITableView *_bookTableView;
//数据源数组
NSMutableArray *_dataArray;
}
@end

@implementation BookViewController
- (void)dealloc{
[_dataArray release];
[_bookTableView release];
[super dealloc];
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.automaticallyAdjustsScrollViewInsets = NO;
[self loadData];
[self showUI];

}
//初始化数据
- (void)loadData{
_dataArray = [[NSMutableArray alloc] init];
//解析plist 文件
NSString *path = [[NSBundle mainBundle] pathForResource:@"bookData" ofType:@"plist"];
NSArray *array = [[NSArray alloc] initWithContentsOfFile:path];
//遍历数组 把数组中字典的内容 存放到数据模型对象中 然后把数据模型对象地址放入数据源数组
for (NSDictionary *dict in array) {
BookModel *bookModel = [[BookModel alloc] init];
bookModel.bookName = [dict objectForKey:@"title"];
bookModel.bookDescription = dict[@"detail"];
bookModel.price = dict[@"price"];
bookModel.imageName = dict[@"icon"];

[_dataArray addObject:bookModel];
[bookModel release];
}
}
//创建表格视图
#pragma mark - 创建表格视图
- (void)showUI{
_bookTableView =[[UITableView alloc] initWithFrame:CGRectMake(0, 64, 320, 416) style:UITableViewStylePlain];
//设置代理
_bookTableView.delegate = self;
_bookTableView.dataSource = self;
//_bookTableView.transform = CGAffineTransformMakeRotation(-M_PI_2);
//设置表格的头视图
_bookTableView.tableHeaderView = [[[ADView alloc] initWithFrame:CGRectMake(0, 0,320,160)] autorelease];
_bookTableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
[self.view addSubview:_bookTableView];

}
#pragma mark == delegate协议==

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 100;
}

#pragma mark - 数据源协议的方法
//多少行
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return _dataArray.count;
}
//创建cell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString * cellName = @"bookCell";
//从复用队列中获取自定义的cell
BookCell *cell = [tableView dequeueReusableCellWithIdentifier:cellName];
if (cell == nil) {
//创建自定义的cell
cell = [[BookCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellName];
//cell.transform = CGAffineTransformMakeRotation(M_PI_2);
}
//对cell 进行内容的修改 在{}进行
//从数据源获取数据模型
BookModel *model = _dataArray[indexPath.row];
//先设置数据模型
cell.bookModel = model;
//显示数据
[cell showData];
cell.backgroundColor = [UIColor colorWithRed:154/255.0f green:154/255.0f blue:154/255.0f alpha:1];
return cell;
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
NSLog(@"tableView gun ");
}

@end


////  ADView.m#import "ADView.h"#import "MyControl.h"@interface ADView()  <UIScrollViewDelegate>@end@implementation ADView{    UIScrollView *_scrollView;    UIPageControl *_pageControl;    UILabel *_label;}- (void)dealloc{    [_scrollView release];    [_pageControl release];    [super dealloc];}- (id)initWithFrame:(CGRect)frame{    self = [super initWithFrame:frame];    if (self) {        [self showUI];    }    return self;}- (void)showUI{        _scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 160)];    for (int i = 0; i < 4; i++) {        UIImageView *image = [MyControl creatImageViewWithFrame:CGRectMake(320*i, 0, 320, 160) image:[NSString stringWithFormat:@"image%d",i]];        [_scrollView addSubview:image];    }    _scrollView.contentSize = CGSizeMake(320*4, 160);    _scrollView.showsHorizontalScrollIndicator = NO;    _scrollView.showsVerticalScrollIndicator = NO;    _scrollView.pagingEnabled = YES;    _scrollView.delegate = self;    [self addSubview:_scrollView];        UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 130, 320, 30)];    view.backgroundColor = [UIColor blackColor];    view.alpha = 0.5;        _label = [MyControl creatLabelWithFrame:CGRectMake(10, 0, 200, 30) text:@"图片0的标题"];    _label.textColor = [UIColor whiteColor];    [view addSubview:_label];        _pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(200, 0, 120, 30)];    _pageControl.numberOfPages = 4;    //添加翻页触发事件    [_pageControl addTarget:self action:@selector(pageControl:) forControlEvents:UIControlEventValueChanged];    [view addSubview:_pageControl];    [self addSubview:view];    [view release]; }//控制滚动- (void)pageControl:(UIPageControl *)page{    [_scrollView setContentOffset:CGPointMake(_pageControl.currentPage*320, 0) animated:YES];    _label.text = [NSString stringWithFormat:@"图片%ld的标题",page.currentPage];}- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{    CGPoint point = scrollView.contentOffset;    _pageControl.currentPage = point.x/320;    _label.text = [NSString stringWithFormat:@"图片%ld的标题",_pageControl.currentPage];}- (void)scrollViewDidScroll:(UIScrollView *)scrollView {    NSLog(@"ScrollView gun ");}/*// Only override drawRect: if you perform custom drawing.// An empty implementation adversely affects performance during animation.- (void)drawRect:(CGRect)rect{    // Drawing code}*/@end


0 0