iOS7下Cell高度自适应

来源:互联网 发布:ceph 写入数据失败 编辑:程序博客网 时间:2024/06/14 07:29

注:该api一个要注意的地方,传进去的size高度必须是0,否则虽然计算回来的size高度是正确地,但赋值给frame后frame里的字却不会自动换行,多余的字仍然以省略号出现。在UILabel里操作时发现的。

Cell高度根据文字自适应的代码,折腾了半天都不对,最后发现是api中的字典参数不能为nil。看来以后苹果的api不能望文生义的随便置参数为nil了,因为它不会崩溃,导致最后效果出来后你不知道问题到底是自己代码计算错误,还是其他问题。

贴出计算高度的代码,是根据self持有的一个NSString数组来计算各个cell高度的:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {    NSString *str = [self.tableData objectAtIndex:indexPath.row];    UIFont *font = [UIFont systemFontOfSize:17.0];    NSDictionary * dic = [NSDictionary dictionaryWithObjectsAndKeys:font,NSFontAttributeName,nil];        CGSize size = [str boundingRectWithSize:CGSizeMake(280, 0) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:dic context:nil].size;        NSLog(@"biaozhun-->%f", size.height);    return size.height + 1;}        

新api中boundingRectWithSize的参数attributes一定要填进去,不能为nil,否则计算出来的高度是不全的(猜想为如果是nil的话api会以一个默认字体类型来计算高度,而这个默认字体由于跟自己设定的字体不一样,所以计算结果会出现偏差);还有return回去的时候,高度要+1,因为cell的高度是contentview的高度+1。


0 0
原创粉丝点击