在第一个表格单元格中滚动到中心

时间:2015-01-10 23:49:34

标签: ios objective-c uitableview swift

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

2 个答案:

答案 0 :(得分:2)

UITableView实际上有一个简洁的方法:

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

您可以使用它将tableView滚动到单元格位于tableView中心的位置,如下所示:

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

答案 1 :(得分: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)