ios - 确定 TableView 单元格中的图像是否完全可见

标签 ios swift xcode uitableview swift5

我有一个表格 View ,其中每个表格 View 单元格都有一个图像。

我需要确定 ImageView 何时在滚动上完全可见。此外,如果两个单独的表格 View 单元格中的两个图像同时完全可见,我只想触发第一个图像的操作。

我想过使用willDisplay ,但我发现这只触发一次,并且一旦单元格进入 View 就会触发。

我还发现了this question ,但它特定于确定 TableView 单元格本身是否完全可见,而不是 TableView 单元格内的 View 。

我有什么选择?解决这个问题的最佳方法是什么?

最佳答案

假设您已经设置了管理图像单元的 View Controller ,下面是该 Controller 的部分代码,它是 UITableView 的委托(delegate),它演示了如何跟踪图像可见的方法。希望对您有所帮助。

@IBOutlet weak var tableView: UITableView!

override func viewDidAppear(_ animated: Bool) {
    self.verifyImagesVisibility()
}

func scrollViewDidScroll(_ scrollView: UIScrollView)  {
    self.verifyImagesVisibility()
}

private func verifyImagesVisibility() {
    for cell in self.tableView.visibleCells {
        if let imageView = cell.imageView {
            let visibleRect = self.tableView.bounds
            let imageRect = imageView.convert(imageView.bounds, to: tableView)

            imageView.layer.borderWidth = 4.0 // for test
            if visibleRect.contains(imageRect) {
                // do anything here for image completely shown
                imageView.layer.borderColor = UIColor.red.cgColor // for test
            } else {
                // do anything here for image become partially hidden
                imageView.layer.borderColor = UIColor.black.cgColor // for test
            }
        }
    }
}

关于ios - 确定 TableView 单元格中的图像是否完全可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59207206/

相关文章:

ios - 使用 count() 时 swift 出现奇怪的错误

ios - 是否可以转录 Twilio 调用 "as you speak"?

ios - 如何在ios中从手机中获取所有图像

iphone - 委托(delegate)IBA行动

ios - 在 Swift 的导航栏上为 UIView 设置动画

iphone - 编写自己的 UINavigationController?类似的功能,而不是子类化

swift - 如何使用通用 NSFetchedResultsController 进行初始化?

swift - 从 ViewController 访问 NSDocument

iphone - 在Mac 10.7.2上安装xCode-我需要知道xcode的版本

ios - Collection View 的自定义布局不会更新