最近做一个类似淘宝详情的页面,主要内容包括:
- 商品banner图
- 商品简介
- 店铺信息
- 商品详情
- 评论区
等内容。如果在以前,我会view接view的码下来。
但是这里面有很多不确定高度的UI,比如简介、商品详情、每条评论等。上面的UI高度变化,下面的所有控件的y得相应变化,控件越多越麻烦。。。
所以出技术方案的时候,决定用tableView做,大致方案如下:
section0的headerView放banner图、简介和店铺信息;
section0的cell放商品详情(详情是webView加载的htmlString);
section1的header的title写“评论区”;
section1的cell是一条条的评论。
这样就不存在每个部分高度变化对下面的影响。。。
然后说说遇到的一些坑:
webView高度问题
webView加载完的代理中,计算完webView的高度,然后返回给viewController作为cell的高,然后[self.table addSubView:tableView];
tableView header的一些问题
当tableView的style是UITableViewStyleGrouped的时候,section0的最上面有大约30-40高度的空白,如图(后面发现footer也有类似问题)
参照了羊神的博客,解决方法如下:
_infomationTable.tableFooterView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, CGFLOAT_MIN)];
_infomationTable.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, CGFLOAT_MIN)];
tableView reloadRows方法
在使用
- (void)reloadRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation NS_AVAILABLE_IOS(3_0);
这个方法的时候,被reload的cell首先得存在,才能去reload,否则会引起数组越界。。。