我自己单独计算我的 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);
}
滚动后,高度计算为完全相同的值,现在框架最终具有此处分配的高度。