如何在 uilabel 中使用多行并根据 Swift 中的标签高度自动扩展 uitableview 行高?

Posted

技术标签:

【中文标题】如何在 uilabel 中使用多行并根据 Swift 中的标签高度自动扩展 uitableview 行高?【英文标题】:How to use multipleline in uilabel and automatically extend tableview row height depend upon label height in Swift? 【发布时间】:2016-05-19 05:52:48 【问题描述】:

我正在使用 swift 语言开发基于表格的 ios 应用程序。我已将 UILabel 集成到 UITableview 单元格中。我想根据 UILabel 高度更改单元格高度。

【问题讨论】:

你的 usinf Storyboard right 【参考方案1】:

您可以将numberoflines 属性设置为0 以获取多行标签。比如,

 yourLabel.numberOfLines = 0;

您可以根据字符串更改标签高度,例如,

 //Calculate the expected size based on the font and linebreak mode of your label
 // FLT_MAX here simply means no constraint in height
 CGSize maximumLabelSize = CGSizeMake(296, FLT_MAX);

CGSize expectedLabelSize = [yourString sizeWithFont:yourLabel.font constrainedToSize:maximumLabelSize lineBreakMode:yourLabel.lineBreakMode];   

 //adjust the label the the new height.
 CGRect newFrame = yourLabel.frame;
 newFrame.size.height = expectedLabelSize.height;
 yourLabel.frame = newFrame;

您可以通过实现委托方法来增加tableview行的高度,

heightForRowAtIndexPath

希望这会有所帮助:)

【讨论】:

如何根据 swift 2.0 中的标签大小自动扩展 tableview,但不是objective-c。请尽快发送给我...【参考方案2】:

首先在 Storyboard 中将 UILabel 行设置为 0。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;


// need to calculte height of label text
 NSString *comment = [[self.objects objectAtIndex:[indexPath row]] objectForKey:@"Testo"];
    CGFloat whidt =  260;
    UIFont *FONT = [UIFont systemFontOfSize:15];
    NSAttributedString *attributedText =[[NSAttributedString alloc]  initWithString:comment  attributes:@   NSFontAttributeName: FONT ];
    CGRect rect = [attributedText boundingRectWithSize:(CGSize)whidt, MAXFLOAT
                                               options:NSStringDrawingUsesLineFragmentOrigin
                                               context:nil];
    CGSize size = rect.size;
    return size.height +130;

whidt 是标签宽度。

【讨论】:

以上是关于如何在 uilabel 中使用多行并根据 Swift 中的标签高度自动扩展 uitableview 行高?的主要内容,如果未能解决你的问题,请参考以下文章

如何将自动布局约束添加到 tableview headerView 内的多行 UILabel?

在 Tableview 中,我想知道如何在单元格最后位置设置多行 UILabel

如何在通知内容扩展中使用多行 UILabel / 自动布局调试布局

多行 UILabel 和 UIScrollview 使用自动布局

以编程方式动态调整多行 UILabel 和随附的表格视图单元格

带有adjustsFontSizeToFitWidth的多行UILabel