【问题标题】:Multiple lines of a label in a custom UITableviewCell自定义 UITableviewCell 中的多行标签
【发布时间】:2013-09-03 19:31:01
【问题描述】:

我已经四处寻找有关我的问题的任何提示。但我找不到解决方案。

我已经创建了 UITableviewCell (FeedCell) 的子类。一张图片和两个标签。 问题是我需要多行的标签没有显示多行。

我使用自动布局。

这是一个显示用户 twitterfeed 的应用程序。

我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";

FeedCell *tweetCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (tweetCell == nil) {
    tweetCell = [[FeedCell alloc]
            initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    [tweetCell.tweetText setNumberOfLines:0];
    [tweetCell.tweetText setLineBreakMode:NSLineBreakByWordWrapping];
    [tweetCell.tweetText setFont:[self fontForCell] ];


}
NSDictionary *tweet = _dataSource[[indexPath row]];

NSString *tweetString = [tweet valueForKey:@"text"];

tweetCell.name.text =[tweet valueForKeyPath:@"user.name"];


[tweetCell.tweetText setText:tweetString];

return tweetCell;

}

我也设置了heigthforRowAtIndexPath:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
NSDictionary *tweet = _dataSource[[indexPath row]];
NSString *theText=[tweet valueForKey:@"text"];
UIFont *cellFont = [self fontForCell];
CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);
CGSize labelSize = [theText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping];

return labelSize.height + 20;

}

问题是tweet cell.tweetText 没有显示多行。我没有用另一个 CellStyle 尝试过这个(我使用自定义 cellstyle)。

任何提示任何人?

【问题讨论】:

  • 你能记录你标签的框架吗?
  • 你设置了什么布局和行数?
  • 我认为您需要自定义自己的单元子类
  • 不确定这是否会有所帮助,但这里有一个我如何做类似事情的简单示例:github
  • 啊。您在代码中在运行时添加了这些标签。我已经在情节提要视图中制作了这些内容。这可能是问题所在?

标签: ios objective-c uitableview


【解决方案1】:

对于多行使用以下内容:

tweetCell.tweetText.numberOfLines = 0;
[tweetCell.tweetText sizeToFit];

出于测试目的,将行高设置为 46.0f,方法如下:

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

我无法解决高度问题,但这确实给了我一个多行的 UILabel

【讨论】:

  • 这与我在互联网上的红色答案相同。所以看起来我可能已经解决了其他一些问题。如果有人想试一试,这里是完整的课程:dropbox.com/sh/fcu61xr532l6q4q/BEiNRih3az
【解决方案2】:

我知道这是一篇旧帖子,但在我搜索时出现了。

我通过关注http://www.raywenderlich.com/73602/dynamic-table-view-cell-height-auto-layout得到了一个这样的例子。

我认为 iOS8 需要以下内容:

  • 将行设置为 0
  • 设置自动换行
  • 将标签大小设置为 >= 20
  • 确保有足够的约束来确定单元格高度(标题高度和垂直间距)

【讨论】:

    【解决方案3】:

    试试

    [tweetCell.tweetText  sizeToFit]
    

    【讨论】:

    【解决方案4】:

    首先,如果要显示 2 行文本(最小 1 和最大 2),numberOfLines 必须设置为 2。设置为 0 表示没有限制。

    其次,仅设置行数是不够的。必须指定标签宽度。要么使用sizeToFit,要么设置一个常量值。

    【讨论】:

    • 另外,我建议在自定义类的 init 方法中设置 UITableViewCell 元素的属性。纯属个人意见,不成规。
    【解决方案5】:

    尝试将设置行数、换行模式和字体的代码放在大括号之外

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-17
      • 1970-01-01
      相关资源
      最近更新 更多