0

我自己单独计算我的 tavleview 单元格的高度。

虽然这在我滚动时效果很好,但有时当表格出现时它看起来不对。

然后,如果我上下滚动它看起来是正确的。

因此我需要以编程方式滚动表格。

现在的问题是,有时我只有 3 行,所以我无法以编程方式滚动 - 但即使没有更多单元格,手动也可以“滚动”视图。在这种情况下,我仍然需要以编程方式“滚动”视图,因为这可以更正表格单元高度的计算,

所以这段代码不起作用:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:10 inSection:0];
[self.theTable scrollToRowAtIndexPath:indexPath
                      atScrollPosition:UITableViewScrollPositionTop
                              animated:YES];

所以问题是,如何以编程方式滚动视图?

*编辑* 我检查了计算出的高度,它们都是正确的——即使在滚动之后,它们的计算结果也与最初显示时完全相同。

所以我给框架设置了一个红色背景,以查看在视图确实出现之后的显示与滚动之后的显示之间的差异。

事实上,在 viewDidAppear 之后的所有帧都具有相同的(错误的)高度,这不是它们设置的高度,如下所示:

-(void) layoutSubviews {
[super layoutSubviews];

//                              x     y   width height
float h = expectedLabelSize.height;
[imageView setFrame:CGRectMake(    8.0, 10.0,  20.0, 20.0)];
[t1 setFrame:CGRectMake(          40.0,  4.0, 280.0, h)]; //total width 320
[t1 setBackgroundColor:[UIColor redColor]];
[t2 setFrame: CGRectMake(        235.0, h+4, 85.0, 15.0)];
NSLog(@"-layoutSubviews--> h:%f w:%f",h,expectedLabelSize.width);

}

滚动后,高度计算为完全相同的值,现在框架最终具有此处分配的高度。

4

2 回答 2

1

viewWillAppear

[self.tableView beginUpdates];
[self.tableView endUpdates];
于 2013-03-29T21:17:31.673 回答
0

I used to have the exact same problem with resizing a cell dynamically to accomodate the contents of a UITextView. I ended up using the free Sensible TableView framework, which amongst many other things, automatically calculates the height for all my cells.

于 2013-03-29T22:43:48.643 回答