1

我在我的表格视图中创建了自定义单元格,有些单元格有图像,有些很高,有些只是文本。单元格的高度是在 heightForRowAtIndexPath 中计算的,我相信这是在调用 cellForRowAtIndexPath 之前完成的。无论高度如何,我都想在单元格底部放置一个图像视图,但我不确定如何从 cellForRowAtIndexPath 中获取计算出的高度?

4

3 回答 3

15

来不及回答了。。

但是,就像@user216661 指出的那样,获取 Cell 或 ContentView 的高度的问题在于它返回了单元格的原始高度。Incase 具有可变高度的行,这是一个问题。

更好的解决方案是获取单元格 ( rectForRowAtIndexPath) 的 Rect,然后从中获取高度。

- (UITableViewCell *)tableView:(UITableView *)iTableView cellForRowAtIndexPath:(NSIndexPath *)iIndexPath {
    UITableViewCell *aCell = (UITableViewCell *)[iTableView dequeueReusableCellWithIdentifier:aCellIdentifier];
    if (aCell == nil) {
        CGFloat aHeight = [iTableView rectForRowAtIndexPath:iIndexPath].size.height;
        // Use Height as per your requirement.
    }

    return aCell;
}
于 2013-07-28T10:38:38.237 回答
3

您可以询问代表,但您会询问两次,因为 tableView 已经询问并相应地调整单元格的大小。最好从细胞本身找出来……

// in cellForRowAtIndexPath:, deque or create UITableViewCell *cell
// this makes the call to heightForRow... and sizes the cell
CGFloat cellHeight = cell.contentView.bounds.size.height;

// alter the imageView y position (assuming the rest of the frame is correct)
CGRect imageFrame = myImageView.frame;
imageFrame.y = cellHeight - imageFrame.size.height;   // place the bottom edge against the cell bottom
myImageView.frame = imageFrame;
于 2012-08-21T22:10:02.707 回答
-1

您可以自己调用 heightForRowAtIndexPath !只需将 cellForRowAtIndexPath 中的 indexPath 作为参数传递,您就可以知道您正在设置的单元格的高度。

假设您使用的是 UITableViewController,只需在 cellForRowAtIndexPath 中使用它...

float height = [self heightForRowAtIndexPath:indexPath]
于 2012-08-21T21:23:47.627 回答