bra*_*ipt 5 objective-c uitableview ios
给定在任何给定时间具有单个可见单元格的UITableView,如何在滚动表格视图时确定哪个单元格在视图中最多?
我知道通过这样做我可以获得一系列可见细胞:
NSArray *paths = [tableView indexPathsForVisibleRows];
Run Code Online (Sandbox Code Playgroud)
然后通过执行以下操作获取最后一个单元格(或第一个或其他)
UITableViewCell* cell = (UITableViewCell*)[tableView cellForRowAtIndexPath:[paths lastObject]];
Run Code Online (Sandbox Code Playgroud)
但是如何比较所有可见细胞并确定它们中哪一个最为可见?
以下逻辑将使您在滚动结束时获得最明显的单元格:
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
CGRect visibleRect = (CGRect){.origin = self.tableView.contentOffset, .size = self.tableView.bounds.size};
CGPoint visiblePoint = CGPointMake(CGRectGetMidX(visibleRect), CGRectGetMidY(visibleRect));
NSIndexPath *visibleIndexPath = [self.tableView indexPathForRowAtPoint:visiblePoint];
}
Run Code Online (Sandbox Code Playgroud)
根据返回的路径数量,算法会有所不同:
*中点位置是第二个单元格的底部。顶部和底部位置是表格视图的顶部和底部。
| 归档时间: |
|
| 查看次数: |
2330 次 |
| 最近记录: |