今天遇到的问题:
1,heardview 头部高度问题,当设置tableview的tableviewheardview属性,再调用系统方法 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section; 设置高度时,heardview的高度会重叠添加的问题;
原因:错误理解了tableviewheardview属性,这个属性是给整个的tableview设置一个区头,而方法 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section; 是给所有分区设置区头。
以后要注意这一点。两个区头是要分开的。
2.uilabel设置了居中显示但是并没有居中,
原因:设置label的属性使用自适应,根据字符串设置的label大小,导致label的宽度没有达到想要的宽度,所以造成并没有居中显示,以后遇到这种问题可以给label设置一下背景色看一下。
3.在一个cell内设置三个label,有一个label行数为2,其他为1行,label的间距和字体时固定的,使用自适应高度,字体高度超出cell的高度。
原因:自适应得到的是字符串总的高度,也就是说label的高度已经超出了两行。这种情况可以 自定义一个字符串 “ 空格 /n 空格” 制造两行字符串,然后使用这两个字符串自适应高,得到两行的高度,计算一行可以使用一个空字符串“ ” , 另外一个方法 得到 字符串行间距 6 ,减去label的行间距就可以。
两行字符串高度 “ 空格 /n 空格”
一行字符串高度 ” “
注意,这样算的label实际高度 比 一行高度+行间距+一行高度 要高;
4.封装view进行数据传递时,自定义初始化方法 ,在自定义初始化方法中添加 参数,用来传递数据;
- (instancetype)initWithFrame:(CGRect)frame goodsArray:(NSArray*)goodsArray;
5.在代理方法中已经设置cell的高度,但是在初始化的时候,cell的高度还是44,只有滚动一次才会恢复设置高度。这是一个问题?
原因:cell在创建的时候是只有一个默认高度的。需要初始化cell之后给他一个高度。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;虽然这个方法调用早,但是cell创建的时候是没有高度的。
所以需要在创建cell的时候设置cell的高度
XBToDaySngnCell *cell = [tableView dequeueReusableCellWithIdentifier:name];
if (!cell) {
cell = [[XBToDaySngnCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:name];
cell.height =[XBToDaySngnCell cellHeight:self.timearray[indexPath.row]];
}
cell.moder = self.timearray[indexPath.row];
return cell;
6.牢记 总数确定 m
一行摆放数量确定 n
一共多少行 (m + n - 1 ) / n;