2015-01-10 46 views
1

我有一个带有自定义单元格的UITableView。单元格的高度为200.我想为第一个单元格的滚动添加动画。这可以使用scrollToRowAtIndexPath。但是,该行出现在视图的顶部,而我希望它在可见的tableView中显示死点。我试着将tableView的contentInset属性设置为一堆不同的值,但似乎都没有提供正确的偏移量。有什么建议么?将第一个表格单元格滚动到中心

+0

你contentInset将是实现代码如下除以二减去一半tableViewCell的我会认为高度的高度。你尝试过吗? – Emil

+0

@Emil,我不确定你的意思。 contentInset的类型是UIEdgeInsets,所以它需要一个顶部,底部,左侧和右侧的值。谢谢你的帮助。 – carlbenson

+0

是的,所以顶部插入将是tableView高度的一半减去单元高度的一半。 – Emil

回答

2

UITableView实际上有这个整洁的方法:

- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath 
       atScrollPosition:(UITableViewScrollPosition)scrollPosition 
         animated:(BOOL)animated 

你可以用它来的tableView滚动的地步细胞是在的tableView像这样的中心:

[tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionMiddle animated:TRUE]; 
+0

这不起作用。滚动到第0行的索引会将该单元格置于顶部,即使我指定了ScrollPositionMiddle。 – carlbenson

+0

这是预期的行为,因为上面没有任何单元格,所以滚动视图从第一个单元格开始,并且不能再向上滚动。为了达到你想要的效果,你必须使用插图,看看我对这个问题的评论。 – Emil

0

我能找到的唯一方法是使用scrollRectToVisible而不是scrollToRowAtIndexPath。无论出于何种原因(可能是因为我的桌面上的滚动被禁用),即使使用@ Emil的scrollToRowAtIndexPathcontentInset的建议,定位仍然不起作用。

这工作:

tableView.contentInset = UIEdgeInsets(top: cellHeight, left: 0, bottom: cellHeight, right: 0) 
tableView.scrollRectToVisible(CGRectMake(0, 0 - tableView.contentSize.height, cellWidth, tableView.contentSize.height), animated: false) 
相关问题