iOS 常见实践JG专题程序员

类似淘宝、美团外卖等app首页 Demo分析 tableView

2016-03-22  本文已影响1707人  wanna_dance

近期开发过程中遇见了类似淘宝美团等app的首页制作,一开始思太明确,后来经过一番曲折后,终于相通了,现在把思路如下展示
界面演示示例


界面演示示例

该试图分为三块

创建一个UITableView

tableview = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight-64) style:UITableViewStylePlain]; 
//注册一个cell
 [tableview registerClass:[UITableViewCell class] forCellReuseIdentifier:HomeCellID]; 
tableview.delegate = self; tableview.dataSource = self; 
tableview.backgroundColor = [UIColor colorWithWhite:0.973 alpha:1.000];
 //垂直和水平方向的线条隐藏 tableview.showsHorizontalScrollIndicator = NO; 
tableview.showsVerticalScrollIndicator = NO; 
tableview.rowHeight = UIFontWeightHeavy;
 //设置tableview的头视图 
tableview.tableHeaderView =tabeViewHeadView; [self.view addSubview:tableview];


给头视图的具体创建如下

//这个就是一个普通的view 
tabeViewHeadView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight/3-0.074*kScreenHeight)]; 
//这个是封装好的一个轮播图 
reuseLoopView = [[ReuseLoopView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight/3-0.074*kScreenHeight)]; 
//这是轮播图上面的文字
 Headlabel = [[UILabel alloc]initWithFrame:CGRectMake(0, kScreenHeight/3-0.074*kScreenHeight - 20, kScreenWidth, 20)];
 Headlabel.backgroundColor = [UIColor colorWithWhite:0.000 alpha:0.500]; 
Headlabel.textColor = [UIColor whiteColor]; 
[tabeViewHeadView addSubview:reuseLoopView]; 
[tabeViewHeadView addSubview:Headlabel];

轮播图是我自己进行封装的,可支持循环播放,支持缩放,支持自动切换,有兴趣的同学可以在我后续的博客中看到封装的Demo
然后就是给Tableview赋值了

tabview的数据源方法

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
 return 2;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{ 
return 1;
}

tabview单元格的具体方法,创建两个collectionview并初始化一些参数

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{ 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:HomeCellID forIndexPath:indexPath]; 
//如果等于0则显示12个功能模块
 if (indexPath.section == 0) {
 //定义collectionView的布局对象
 UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc]init]; 
layout.minimumLineSpacing = kCellSpace;
 layout.minimumInteritemSpacing = kCellSpace; 
//这里的kCellSpace kCellSize 都是宏定义,自己随意给定值就好 layout.itemSize = CGSizeMake(kCellSize, kCellSize); 
layout.sectionInset = UIEdgeInsetsMake(kCellSpace, kCellSpace, kCellSpace, kCellSpace);
 //定义collectionview的信息 
UICollectionView *collectionView=[[UICollectionView alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth, 0.5*kScreenHeight) collectionViewLayout:layout]; 
//加上tag之,为了更好的实现collcetionview的代理方法 collectionView.tag = 899; 
collectionView.bounces = NO; 
collectionView.backgroundColor=[UIColor whiteColor]; 
collectionView.delegate=self; collectionView.dataSource=self; 
//注册单元格
 [collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:HomeCollectionView1CellID]; [cell addSubview:collectionView]; } 
if (indexPath.section == 1) {
 //定义collectionView的布局对象 
UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc]init];
 layout.minimumLineSpacing = kCellSpace; 
layout.minimumInteritemSpacing = kCellSpace; layout.itemSize = CGSizeMake(kCell2Width, kCell2Height); 
layout.sectionInset = UIEdgeInsetsMake(2, 0, 2, 0); 
//定义collectionview的信息 
UICollectionView *collectionView=[[UICollectionView alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth, 0.3396*kScreenHeight) collectionViewLayout:layout]; 
collectionView.tag = 900;
collectionView.bounces = NO; 
collectionView.scrollEnabled = NO; 
collectionView.backgroundColor=[UIColor whiteColor]; 
collectionView.delegate=self; 
collectionView.dataSource=self; 
//注册单元格 
[collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:HomeCollectionView2CellID]; 
[cell addSubview:collectionView];
 } 
cell.selectionStyle = UITableViewCellSelectionStyleNone; return cell;
}

最后就是实现tableview和collectionview的代理方法了 怎么样,小伙伴们都学会了没有,原来布局什么的一切so easy!~

上一篇 下一篇

猜你喜欢

热点阅读