4

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

我制作了 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;

}

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

任何提示任何人?

4

5 回答 5

2

对于多线使用以下内容:

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

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

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

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

于 2013-09-03T20:33:30.197 回答
2

我知道这是一个旧帖子,但是当我搜索时它出现了。

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

我认为对于iOS8,需要以下内容:

  • 将行设置为 0
  • 设置自动换行
  • 将标签大小设置为 >= 20
  • 确保有足够的约束来确定单元格高度(标题高度和垂直间距)
于 2015-06-21T23:27:02.693 回答
1

尝试

[tweetCell.tweetText  sizeToFit]
于 2013-09-03T20:23:06.753 回答
0

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

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

于 2013-09-03T21:14:07.730 回答
0

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

于 2013-10-16T06:27:49.383 回答