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

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

Stack Overflow用户
提问于 2009-03-25 02:56:56
回答 1查看 17.2K关注 0票数 19

我正在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书中的算法显示了实际的推文单元格:

代码语言: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都显示得很好。然而,当我向下滚动时,下面的tweet非常混乱--似乎一旦一个单元格滚动出屏幕,它上面的单元格的高度就会调整到比正常大小更大,并遮挡住它下面的单元格的一部分。当单元格到达视图顶部时,它会重置自身并正确呈现。向上滚动不会有任何困难。

这是一个实际展示这一点的视频:http://screencast.com/t/rqwD9tpdltd

我已经尝试了相当多:在创建时调整单元格的框架大小,对不同高度的单元格使用不同的标识符(即[NSString stringWithFormat:@"Identifier%d", rowHeight]),在界面生成器中更改属性……

如果还有其他代码片段可以发布,请让我知道。提前感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-03-25 03:30:13

叹一口气。事实证明,我没有把所有的属性都调整得足够好。但至少我摆脱了那个虫子。:)

通过确保检查UITableViewCell"Clip Subviews"属性,已修复此行为。

该行为是由于声明我的tweet文本标签具有所需的最大高度引起的--当表格单元格的子视图没有被裁剪时,上面单元格中的标签将呈现在下面的单元格之上。这在第一次呈现屏幕时是不可见的,因为SDK呈现单元格的顺序是向下的,以及它如何将每个单元格堆叠在另一个单元格之上。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/680067

复制
相关文章

相似问题

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