开发思想 自定义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