您的位置:首页 > 产品设计 > UI/UE

UITableView cell中label自动换行和自定义label自动换行

2014-10-15 13:21 204 查看
换行的前提必须是有足够的高度 才能换 否则不显示超出部分

所以,在设置label换行的时候 要考虑cell的高度,cell的高度也要变化,废话不多说,来段代码:

cell.label.text=[dict objectForKey:@"info"];
cell.label.numberOfLines=0;  //可多行显示
cell.label.lineBreakMode=NSLineBreakByWordWrapping;//拆行
设置label的高度
[self changeLabelHeight:cell.label :cell.label.text];

//设置label的高度
-(void)changeLabelHeight:(UILabel *)label : (NSString *)string{
NSDictionary *attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:15]};
//计算UILabel字符显示的实际大小
size=[string boundingRectWithSize:CGSizeMake(145, 1000)//最大限制的宽和高
options:NSStringDrawingUsesLineFragmentOrigin
attributes:attribute
context:nil].size;
//重设UILabel实例的frame
[label setFrame:CGRectMake(label.frame.origin.x, label.frame.origin.y, size.width, size.height)];

NSLog(@"%lf",size.height);
}


//设置cell的高度
//设置行高
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
NSDictionary *attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:15]};
NSDictionary *dict=[self.listData objectAtIndex:indexPath.row+1];
//获取数据,根据数据来确定长和高
CGSize size=[[dict objectForKey:@"info"] boundingRectWithSize:CGSizeMake(156, 1000)//最大限制宽和高
options:NSStringDrawingUsesLineFragmentOrigin
attributes:attribute
context:nil].size;
NSLog(@"row heigth :%lf",size.height+20);
if (size.height+20<58) {
return 58;
}else{
return size.height+20;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: