我有一个表格 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/