我从Core Data获取对象self.name = [[abc anyObject] valueForKey:@"name"]
并显示它:
cell.nameLabel.text = [NSString stringWithFormat:@"%@",self.name];
cell.nameLabel.numberOfLines = 0;
cell.nameLabel.lineBreakMode = NSLineBreakByWordWrapping;
如何在- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
答案 0 :(得分:2)
这是解决方案:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
CGSize constraintSize = CGSizeMake(286.0f, CGFLOAT_MAX);
UIFont *theFont = [UIFont systemFontOfSize:14.0f];
CGSize theSize;
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
{
CGRect frame = [[self.mArray objectAtIndex:indexPath.row] boundingRectWithSize:constraintSize options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading) attributes:@{NSFontAttributeName:theFont} context:nil];
theSize = frame.size;
}
else
{
theSize = [[self.mArray objectAtIndex:indexPath.row] sizeWithFont:theFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping];
}
return theSize.height;
}
同样在- (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
我使用cell.label.numberOfLines = 0
如果您在行中使用多个标签 - 在CGSizeMake(286.0f, CGFLOAT_MAX)
中使用低于286.0f的值(例如150.0f)
答案 1 :(得分:1)
只需在UITableViewCell类中实现一个静态方法,该方法可以根据提供的字符串和宽度计算单元格高度。 Cell应该知道它是如何构造的以及它将占用多少空间。
例如:
+ (CGFloat)heightForWidth:(CGFloat)width text:(NSString *)text {
CGFloat height = ... ;
return height;
}
答案 2 :(得分:0)
尝试在故事板中禁用自动布局,然后调用sizeToFit。
cell.nameLabel.text = [NSString stringWithFormat:@"%@",self.name];
cell.nameLabel.numberOfLines = 0;
cell.nameLabel.lineBreakMode = NSLineBreakByWordWrapping;
[cell.nameLabel sizeToFit];