最近做一個(gè)類似淘寶詳情的頁面,主要內(nèi)容包括:
- 商品banner圖
- 商品簡介
- 店鋪信息
- 商品詳情
- 評論區(qū)
等內(nèi)容傍衡。如果在以前蠢壹,我會(huì)view接view的碼下來。
但是這里面有很多不確定高度的UI入宦,比如簡介哺徊、商品詳情、每條評論等乾闰。上面的UI高度變化落追,下面的所有控件的y得相應(yīng)變化,控件越多越麻煩涯肩。轿钠。。
所以出技術(shù)方案的時(shí)候病苗,決定用tableView做疗垛,大致方案如下:
section0的headerView放banner圖、簡介和店鋪信息铅乡;
section0的cell放商品詳情(詳情是webView加載的htmlString)继谚;
section1的header的title寫“評論區(qū)”;
section1的cell是一條條的評論。
這樣就不存在每個(gè)部分高度變化對下面的影響花履。芽世。。
然后說說遇到的一些坑:
webView高度問題
webView加載完的代理中诡壁,計(jì)算完webView的高度济瓢,然后返回給viewController作為cell的高,然后[self.table addSubView:tableView];
tableView header的一些問題
當(dāng)tableView的style是UITableViewStyleGrouped的時(shí)候妹卿,section0的最上面有大約30-40高度的空白旺矾,如圖(后面發(fā)現(xiàn)footer也有類似問題)
QQ83020.png
參照了羊神的博客,解決方法如下:
_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);
這個(gè)方法的時(shí)候夺克,被reload的cell首先得存在箕宙,才能去reload,否則會(huì)引起數(shù)組越界铺纽。柬帕。。