如何在UITableView中查找屏幕中心的哪一行/单元格



我有UITableview,表格视图中有许多行/单元格。

当 UITableview 在那个时候滚动时,找到屏幕中心的哪一行/哪个单元格。

In Swift 4

对于中心的确切索引号,我们可以简单地使用:-

let middleIndex = ((heightTableView.indexPathsForVisibleRows?.first?.row)! + (heightTableView.indexPathsForVisibleRows?.last?.row)!)/2

有几个选项可用于获取中心行。一种是将 indexPath 放在中心:

NSIndexPath *indexPathAtCenter = [self.tableView indexPathForRowAtPoint:CGPointMake(self.tableView.bounds.size.width/2, self.tableView.bounds.size.height/2)];
UITableViewCell *centerCell = [self.tableView cellForRowAtIndexPath:indexPathAtCenter];

或者,您可以获取所有可见的索引路径并选择中间的一条:

NSArray<NSIndexPath*> *visibleIndexPaths = [self.tableView indexPathsForVisibleRows];
NSIndexPath *middleIndexPath = visibleIndexPaths[visibleIndexPaths.count/2];
UITableViewCell *centerCell = [self.tableView cellForRowAtIndexPath: middleIndexPath];

取决于实现的其余部分,您要走哪条路线!

基于先前答案的更优雅的解决方案,适用于 Swift 4 和 5:

let indexPath = tableView.indexPathForRow(at: tableView.bounds.center)

使用此小CGRect扩展:

extension CGRect {
    var center: CGPoint {
        return CGPoint(x: self.midX, y: self.midY)
    }
}

相关内容

  • 没有找到相关文章

最新更新