【问题标题】:iPhone: change height of UITableViewCell coming from a NIBiPhone:更改来自 NIB 的 UITableViewCell 的高度
【发布时间】:2010-04-30 11:45:49
【问题描述】:

我有一个自定义 UITableViewCells 的 UITableView,如下所示:

[ CELL 0
    [ description ]
    [ dynamic content type 1 ]
    [ dynamic content type 2 ]
    [ dynamic content type 3 ]
 ]
 [ CELL 1
    [ description ]
    [ dynamic content type 1 ]
    [ dynamic content type 3 ]
 ]
 [ CELL 2
    [ description ]
    [ dynamic content type 2 ]
 ]
 [ ... and so on ... ]

由于 [description] 部分已经相当复杂,我决定使用 Interface Builder 来设计它,并使用 [cell addSubview:...] 以编程方式在 cellForRowAtIndexPath 中添加 [动态内容]。我现在的问题是,我在 Interface Builder 中为我的自定义 UITableViewCell 设置了默认高度,但是当我添加我的 [动态内容](可能介于 0..3 之间)时,我有不同高度的不同单元格。

当然要计算总高度并更改heightForRowAtIndexPath 中的返回值,但是如何更改我的实际cell 的高度值(从具有固定高度的nib 文件加载) ?

【问题讨论】:

    标签: iphone uitableview


    【解决方案1】:

    为什么不更新cellForRowAtIndexPath 中单元格的边界(您已经添加了动态内容)?

    【讨论】:

    • TableView Widget 将在获取单元格之前为每个单元格分配高度。这是为了确定滚动长度和我想象的其他一些性能考虑。如果您只是设置边界,则高度将适用于一个,但随后它将踩在其余单元格的顶部。
    • @Brian 我认为这就是 Stefan 在他最后一句话中的意思。他已经在计算正确的高度并在委托方法heightForRowAtIndexPath 中返回它。他担心牢房的界限。我不确定 UITableView 是否会修改单元格的大小。它确实修改了框架在-[UITableView layoutSubviews]中的原点,因为它必须排列单元格。
    • 其实我之前用setFrame试过了,但是没用。我可能同时搞砸了其他事情。我现在用 setFrame 和 setBounds 试了一下,两者都有效 :-) Muchas gracias.
    • 哈,是啊,显然我今天上午的阅读能力有点模糊!
    【解决方案2】:

    您要计算并返回以下值:

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

    需要注意的一点是,这将在启动时为您视图中的每一行调用,因此请注意您创建的内容以计算大小。

    另一个选项,在实现中可能更标准,是做一个分组的 TableView 小部件,在这里你称之为单元格的部分,然后每一行都是描述或动态内容。如果你的 ascii 绘图是我的设计规范,我会这样做,但我猜你还有更多的东西要花掉。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-15
      相关资源
      最近更新 更多