Swift - 找出哪个表格视图单元占据了大部分屏幕

时间:2016-01-20 12:09:03

标签: swift uitableview

我有这个表视图,其表视图单元格具有屏幕的宽度和高度。每个都显示一个图像。 滚动表格视图时,可以在整个屏幕上放置一个表格视图单元格。或者,您最多可以同时在应用程序的屏幕上看到2个表格视图单元格。 我的问题是:有什么方法可以找出2个表视图单元中哪个占用屏幕高度比另一个高?

3 个答案:

答案 0 :(得分:3)

查看第二个可见单元格(tableView.visibleCells[1])并检查其y位置。如果它不到tableView高度的一半,它会占用更多的屏幕,否则更少。以任何你想要的方式打破关系。

修改

给定indexPath的y位置是固定的,因此您需要考虑tableView' contentOffset

CGFloat yOrigin = [tableView.visibleCells[1] frame].origin.y - tableView.contentOffset.y;

答案 1 :(得分:0)

您可以尝试获取tableView的visibleCells并检查这些单元格的来源。由于您在任何时候都有2个visibleCell,因此比较它们各自的框架的y值可以告诉您哪个占用更多高度

答案 2 :(得分:0)

以下是查明哪个细胞可见度超过60%的简便方法。

func scrollViewDidScroll(scrollView: UIScrollView) {

    checkWhichVideoToEnable()
}

func checkWhichVideoToEnable() {

    for cell in tableView.visibleCells as [UITableViewCell] {

        if cell.isKindOfClass(UITableViewCell) {

            let indexPath = tableView.indexPathForCell(cell)
            let cellRect = tableView.rectForRowAtIndexPath(indexPath!)
            let superView = tableView.superview

            let convertedRect = tableView.convertRect(cellRect, toView: superView)
            let intersect = CGRectIntersection(tableView.frame, convertedRect)
            let visibleHeight = CGRectGetHeight(intersect)

            if visibleHeight > self.view.bounds.size.height * 0.6 {  // only if 60% of the cell is visible.

                //cell is visible more than 60%
                print(indexPath?.row) //your visible cell.
            }
        }
    }
}

来自HERE的参考。