无法让 UILabel 显示超过 3 行

Posted

技术标签:

【中文标题】无法让 UILabel 显示超过 3 行【英文标题】:Can't get UILabel to display more than 3 lines 【发布时间】:2009-07-14 14:42:24 【问题描述】:

我有一个带有一堆单元格的表格,我试图让 uilabel 显示超过 3 行。我适当地设置了 linebreakmode 和 numberoflines,但它仍然没有显示超过三行。有什么建议么?表格单元格会自动调整其高度以适应字符/行数,但文本显示三行,然后是一个椭圆(当您单击单元格时,它会转到另一个显示全文的视图。

下面是我必须创建和显示 UILabel 的代码:

   self.commentLabel = [self newLabelWithPrimaryColor:[UIColor blackColor] selectedColor:[UIColor whiteColor] fontSize:12.0 bold:YES];
    self.commentLabel.textAlignment = UITextAlignmentLeft; // default
    self.commentLabel.lineBreakMode = UILineBreakModeWordWrap;
    self.commentLabel.numberOfLines = 0; // no limit to the number of lines 
    [myContentView addSubview:self.commentLabel];
    [self.commentLabel release];

我希望将整个评论显示在表格单元格中。

【问题讨论】:

建议:使用“new” (newLabelWithPrimaryColor) 作为前缀的方法将在较新的 llvm clang 编译器上生成编译器警告。这是一个命名约定,暗示返回的值不是自动释放的,调用者应该调用 release。一个更好的名字是 labelWithPrimaryColor:. 【参考方案1】:

标签的矩形似乎太小,无法容纳所有文本...您必须使矩形更大,以使其不显示省略号并显示整个文本

【讨论】:

是的 - 我正在调整表格单元的大小,但不是 UILabel。我去了创建标签的方法并创建了一个数学函数来根据注释中的字符数设置高度。谢谢丹尼尔。【参考方案2】:

采用自动布局设计理念,UILabel不设置高度限制,不设置。行数为 0

Autolayout 会根据标签的文字自动处理标签的动态高度。如果标签有单行文本,那么它将只占用单行空间。如果 label 有多于一行,那么它会根据文本大小和显示文本所需的行数调整 label 的大小。

分配和实现 tableview 数据源和委托 将UITableViewAutomaticDimension 分配给rowHeight 和estimatedRowHeight 实现委托/数据源方法(即heightForRowAt并返回一个值UITableViewAutomaticDimension给它)

-

目标 C:

// in ViewController.h
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>

  @property IBOutlet UITableView * table;

@end

// in ViewController.m

- (void)viewDidLoad 
    [super viewDidLoad];
    self.table.dataSource = self;
    self.table.delegate = self;

    self.table.rowHeight = UITableViewAutomaticDimension;
    self.table.estimatedRowHeight = UITableViewAutomaticDimension;


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

    return UITableViewAutomaticDimension;

看看这个答案:Adjust UILabel Dynamically Within UITableViewCell?

【讨论】:

以上是关于无法让 UILabel 显示超过 3 行的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发 UILabel实现自适应高宽

有背景颜色换行 UILabel [重复]

UILabel vs UITextView 和属性字符串 url 链接

自动增加/减少 UITableViewCell 中的 UILabelView 高度?

无法让 UILabel 显示在 UIView 之上

更改 TableViewController 中的 UILabel Y 位置