Tyl*_*itt 10 iphone uitableview ios
有没有办法让UITableViews滚动单元格到单元格?也就是说,表视图的顶部始终是UITableViewCell的顶部.
我尝试了分页标志,但这似乎滚动整个"页面".我只想要细胞滚动细胞.
谢谢
Tör*_*yar 20
UTTableView
是的子类UIScrollView
,因此您可以使用scrollViewDidScroll
方法在滚动后重新排列TableView滚动位置.
您可以使用tableView.contentOffset
获取当前滚动位置的位置.通过将其划分为有意义的数字,您可以获得最顶层的单元格.
int cellIndex = tableView.contentOffset / cellHegiht;
Run Code Online (Sandbox Code Playgroud)
或者你可以在中心(顶部,底部)获得当前可见的单元格,如下所示:
NSArray *indexPathsForVisibleRows = [tableView indexPathsForVisibleRows];
NSIndexPath *selectedIndexPath = [indexPathsForVisibleRows objectAtIndex:(indexPathsForVisibleRows.count / 2)]; //this gets center cell
Run Code Online (Sandbox Code Playgroud)
在计算顶部(或底部)边缘点击哪个单元格后,您可以通过调用以下方法来校正单元格边缘的漂移:
[tableView scrollToRowAtIndexPath:selectedIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
Run Code Online (Sandbox Code Playgroud)
您可以使用UIScrollViewDelegate
方法激活捕捉.您可以在滚动动画完成时或动画仍在继续时激活.这将产生不同的用户交互,并且不能说一个比另一个好.
但只是实现以下方法,没有别的东西看起来像我最喜欢的:
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView
withVelocity:(CGPoint)velocity
targetContentOffset:(inout CGPoint *)targetContentOffset {
int cellHeight = 41;
*targetContentOffset = CGPointMake(targetContentOffset->x,
targetContentOffset->y - (((int)targetContentOffset->y) % cellHeight));
}
Run Code Online (Sandbox Code Playgroud)
当用户触摸TableView
通知应用程序时,将调用此方法.targetContentOffset
是一个inout
变量,因此您可以在动画继续时实际设置最终滚动位置.使用右键cellHeight
,您TableView
将始终捕捉细胞.
归档时间: |
|
查看次数: |
8751 次 |
最近记录: |