先记着个属性吧,知道就行:uitableview有个属性值 separatorStyle 可用来去掉cell间的白线:
tableView.separatorStyle = UITableViewCellSeparatorStyleNone; //总共有三个值,可以试下有空
转载自:http://aclyyx.iteye.com/blog/1634726
啰嗦几句:
这里主要是通过NSString的sizeWithFont:constrainedToSize:lineBreakMode:方法实现。
该方法用于计算显示完整内容所需要的最小尺寸。
下面是摘抄的说明
NSString的函数sizeWithFont:constrainedToSize:lineBreakMode:
API文档解释:若字符串以规定的约束条件进行描绘,则返回实际的大小。
用途:返回以指定字体进行描绘时,字符串所占据的实际大小。
运行效果:
程序解析:
该部分主要摘抄自《UITableView高度自適應》,稍稍做了改动。
C代码 收藏代码
- (UITableViewCell ) tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString * CellIdentifier = @”MessageViewControllerCell”;
int row = [indexPath row];
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
// 用何種字體進行顯示
UIFont *font = [UIFont systemFontOfSize:14];
// 該行要顯示的內容
NSString *content = [_arr objectAtIndex:row];
// 实例化单元格对象
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
// 设置显示文字
cell.textLabel.text = content;
// 設置自動換行(重要)
cell.textLabel.numberOfLines = 0;
// 設置顯示字體(一定要和之前計算時使用字體一至)
cell.textLabel.font = font;
}
return cell;
}
C代码 收藏代码
- (float)tableView:(UITableView )tableView heightForRowAtIndexPath:(NSIndexPath )indexPath
{
int row = [indexPath row];
// 列寬
CGFloat contentWidth = self.tv.frame.size.width;
// 用何種字體進行顯示
UIFont *font = [UIFont systemFontOfSize:14];
// 該行要顯示的內容
NSString *content = [_arr objectAtIndex:row];
// 計算出顯示完內容需要的最小尺寸
CGSize size = [content sizeWithFont:font constrainedToSize:CGSizeMake(contentWidth, 1000.0f) lineBreakMode:UILineBreakModeWordWrap];
// 這裏返回需要的高度
return size.height+20;
}