Iphone 通过编程滚动更正计算的表格单元格高度
我自己计算我的tavleview单元格的高度 当我滚动时,这很有效,但有时当表格出现时,它看起来是错误的 然后,如果我上下滚动,它看起来是正确的 因此,我需要以编程方式滚动表 现在的问题是,有时我只有3行,所以我不能以编程方式滚动-但手动可以“滚动”视图,即使没有更多的单元格。在这种情况下,我仍然需要以编程方式“滚动”视图,因为这样可以更正tablecell高度的计算 因此,此代码不起作用:Iphone 通过编程滚动更正计算的表格单元格高度,iphone,objective-c,uitableview,Iphone,Objective C,Uitableview,我自己计算我的tavleview单元格的高度 当我滚动时,这很有效,但有时当表格出现时,它看起来是错误的 然后,如果我上下滚动,它看起来是正确的 因此,我需要以编程方式滚动表 现在的问题是,有时我只有3行,所以我不能以编程方式滚动-但手动可以“滚动”视图,即使没有更多的单元格。在这种情况下,我仍然需要以编程方式“滚动”视图,因为这样可以更正tablecell高度的计算 因此,此代码不起作用: NSIndexPath *indexPath = [NSIndexPath indexPathForRo
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:10 inSection:0];
[self.theTable scrollToRowAtIndexPath:indexPath
atScrollPosition:UITableViewScrollPositionTop
animated:YES];
所以问题是,如何以编程方式滚动视图
*编辑*
我检查了计算出的高度,它们都是正确的——即使在滚动之后,它们的计算结果与最初显示时完全相同
因此,我给了框架一个红色背景,以查看视图出现后的显示与滚动后的显示之间的差异
事实上,ViewDidDisplay之后的所有帧都具有相同(错误)的高度,而不是像这样设置它们的高度:
-(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);
}
滚动后,高度计算为完全相同的值,现在帧最终具有此处指定的高度。在
视图中将出现:
[self.tableView beginUpdates];
[self.tableView endUpdates];
我曾经遇到过与动态调整单元格大小以容纳UITextView内容完全相同的问题。我最终使用了免费的Sensive TableView框架,该框架可以自动计算所有单元格的高度 你为什么不设法解决真正的问题呢?计算单个单元格的高度是可以做到的。因为计算是正确的——因为它在我滚动时起作用。我所需要做的就是以编程方式向下滚动视图,或者以某种方式强制重新计算所有单元格。重新加载数据不会触发此操作。是否尝试调用[self.tableView beginUpdates]
,然后立即调用[self.tableView endUpdates]
?这应该会触发单元格高度的重新计算。不幸的是,这不起作用-到目前为止,唯一有效的方法是在表格单元格出现在顶部时移动它们,这样它们就必须返回,然后才能正确计算……@user387184:您可能必须显示cellforrowatinexpath
和heightforrowatinexpath
方法。我将-只需要准备它,因为它非常复杂,并且调用了其他几个方法。。。谢谢因此,我添加了代码和上面实际发生的事情的解释……iPhone的布局似乎有问题,而不是我对高度的计算。我最后只是添加了一条线的高度,希望它在我所有的情况下都能工作——电池更高,但最初和滚动后看起来都不错。无论如何,我没有找到解释。