【问题标题】:UITableview getting custom cell heightUITableview获取自定义单元格高度
【发布时间】:2014-06-21 20:24:02
【问题描述】:

我即将使用方法在tableview中开发一个自定义单元格:

http://www.appcoda.com/ios-programming-customize-uitableview-storyboard/

在我开始之前我关心的是以下内容。

单元格将包含三个标签,在某些情况下很短的标签,在某些情况下很长的标签。

这样做的效果是单元格的高度可能会发生很大变化。

无论如何我可以得到单元格的高度

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

打电话

或者有没有更好的方法来解决我正在尝试做的事情。

谢谢

【问题讨论】:

  • 你需要改变单元格的高度吗?是动态高度表吗?
  • 理想情况下,有些单元格会很小,非常短的文本,有些则非常长,但如果我将它们都放在最大高度,那么如果有意义的话,真正短的单元格看起来很糟糕,有很多空白空间跨度>
  • 透视一下,短标签2行,长标签40-50行
  • 可以在heightForRowAtIndexPath方法中设置表格单元格的高度。
  • 没错,我怎样才能获得该调用的自定义单元格的高度

标签: ios objective-c xcode


【解决方案1】:

更好的方法是在渲染视图之前计算高度。

例如,您获得了三个带有以下数据的标签:

  1. 标题
  2. 字幕
  3. 说明

我要做的是通过以下方式计算每个字符串的大小:

UIFont *yourFont = // [UIFont ...]
CGSize stringBoundingBox = [someString sizeWithFont:yourFont];

然后我会将该大小与相应数据的键(标题、副标题、描述)一起存储在我的数据堆栈中,键将是

  1. titleSize //为标题
  2. subTitleSize //为子标题
  3. 描述尺寸

NSArray 的项目看起来像:

 @{
  @"titleSize" : [NSValue valueWithCGSize:(CGSize)titleSize],
  @"subTitleSize" : [NSValue valueWithCGSize:(CGSize)subTitleSize],
  @"descriptionSize" : [NSValue valueWithCGSize:(CGSize)descriptionSize],
  @"title" : title, //the NSString data
  @"subTitle" : subTitle, //the NSString data
  @"descriptionSize" : descriptionSize, //the NSString data

 }

在这里你可以拥有:

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath        *)indexPath{
      NSDictionary *item = stack[indexPath.row];
      CGSize titleSize = [item[@"titleSize"] CGSizeValue];
      CGSize subTitleSize = [item[@"subTitleSize"] CGSizeValue];
      CGSize descriptionSize = [item[@"descriptionSize"] CGSizeValue];

      //calculate the correct height and stuff.
       ...........

   return height;
 }

您可以创建一些常量或方法来获取您将拥有的边距和填充。

此解决方案的美妙之处在于您只需计算一次。但是,如果您的数据更新给定项目,您需要重新计算您的尺寸并重新加载您的表格视图。

【讨论】:

    猜你喜欢
    • 2011-11-27
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 2012-08-01
    • 2018-06-23
    相关资源
    最近更新 更多