首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >具有动态单元格高度的UITableView-我需要做什么来修复滚动下来?

具有动态单元格高度的UITableView-我需要做什么来修复滚动下来?

提问于 2018-02-05 01:32:55
回答 1关注 0查看 207

我正在iPhone上构建一个小小的Twitter客户端。自然,我在UITableView中显示这些tweet,当然它们的长度也不同。我正在根据文本动态地更改单元格的高度,正常运行:

代码语言:javascript
复制
- (CGFloat)heightForTweetCellWithString:(NSString *)text {
  CGFloat height = Buffer + [text sizeWithFont:Font constrainedToSize:Size lineBreakMode:LineBreakMode].height;
  return MAX(height, MinHeight);
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
  NSString *text = // get tweet text for this indexpath
    return [self heightForTweetCellWithString:text];
  }
}

我正在使用PragProg书中的算法显示实际的tweet单元格:

代码语言:javascript
复制
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  static NSString *CellIdentifier = @"TweetCell";
  TweetCell *cell = (TweetCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
  if (cell == nil) {
    cell = [self createNewTweetCellFromNib];
  }
  cell.tweet.text = // tweet text
  // set other labels, etc
  return cell;
}

当我启动的时候,所有的tweet都显示得很好。然而,当我向下滚动时,下面的推文被很明显地向上移动--似乎一旦一个单元格从屏幕上滚动出来,它上面的单元格的高度就会被调整到比它应该的尺寸更大,并且模糊了它下面的部分细胞。当单元格到达视图顶部时,它会重新设置自身并正确呈现。滚动没有困难。

下面是一段视频,显示了这一点的作用:http://creencast.com/t/rqwD9tpdltd

我已经尝试了很多次:在创建时调整单元格的帧大小,对不同高度的单元使用不同的标识符(例如[NSString stringWithFormat:@"Identifier%d", rowHeight]),更改接口生成器中的属性。

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档