无法根据objective-c中标签的文本大小设置单元格大小

时间:2015-12-30 13:42:09

标签: ios objective-c uitableview

我正在尝试使用聊天应用。聊天工作正常。面对一些UI问题。

1。我正在使用自动布局标签。因此,根据邮件大小自动标签扩展。但是,我在UITableViewCell中有标签。我无法动态计算行高。

我的代码:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
CGSize textSize = {268, CGFLOAT_MAX};
CGSize size = [message sizeWithFont:[UIFont fontWithName:@"Helvetica Neue" size:14] constrainedToSize:textSize lineBreakMode:NSLineBreakByWordWrapping];
CGFloat height = size.height  < 65 ? 65 : size.height;
return height;
}

我的标签子类代码

- (void)drawTextInRect:(CGRect)rect
{
    self.textInsets = UIEdgeInsetsMake(5, 5, 5, 5);
    return [super drawTextInRect:UIEdgeInsetsInsetRect(rect, self.textInsets)];
}

- (CGSize) intrinsicContentSize
{
    self.textInsets = UIEdgeInsetsMake(5, 5, 5, 5);
    CGSize superSize = [super intrinsicContentSize] ;
    superSize.height += self.textInsets.top + self.textInsets.bottom ;
    superSize.width += self.textInsets.left + self.textInsets.right ;
    return superSize ;
}

以上代码适用于小型消息,例如400到800个字符。不仅仅是它不起作用。根据标签大小,单元格大小不会增加。请指导我。

我的输出:

enter image description here

在上面的屏幕截图中,显示时间和完整消息的小消息。如果我们输入大文本,20%的邮件会被隐藏。请指导我。怎么解决这个问题?

1 个答案:

答案 0 :(得分:3)

使用Storyboard作为标签并仅使用单个标签将标签设置为具有所有4个约束,左,右,上,下设置行数0。 在ViewController中使用这两种方法,Table视图将自动设置高度取决于您的文本

 -(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath
{
   return UITableViewAutomaticDimension;
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
 return UITableViewAutomaticDimension;
}