Ios 确定表格视图单元格中的图像是否完全可见
我有一个表视图,其中每个表视图单元格都有一个图像 我需要确定图像视图何时在滚动条上完全可见。另外,如果两个单独的表视图单元格中的两个图像同时完全可见,我只想触发第一个图像的操作 我曾想过使用,但我发现它只会触发一次,并且在细胞进入视野时就会触发 我也发现了,但这是为了确定表视图单元格本身是否完全可见,而不是表视图单元格中的视图Ios 确定表格视图单元格中的图像是否完全可见,ios,swift,xcode,uitableview,swift5,Ios,Swift,Xcode,Uitableview,Swift5,我有一个表视图,其中每个表视图单元格都有一个图像 我需要确定图像视图何时在滚动条上完全可见。另外,如果两个单独的表视图单元格中的两个图像同时完全可见,我只想触发第一个图像的操作 我曾想过使用,但我发现它只会触发一次,并且在细胞进入视野时就会触发 我也发现了,但这是为了确定表视图单元格本身是否完全可见,而不是表视图单元格中的视图 我有什么选择?解决这个问题的最佳方法是什么?假设您已经设置了管理图像单元格的视图控制器,下面是该控制器的部分代码,它是UITableView的代表,演示了如何跟踪图像变为
我有什么选择?解决这个问题的最佳方法是什么?假设您已经设置了管理图像单元格的视图控制器,下面是该控制器的部分代码,它是
UITableView
的代表,演示了如何跟踪图像变为可见的方法。希望这会有帮助
@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
}
}
}
}
您可以使用user let cells=tableView.visiblecells将自己设置为滚动视图代理,并在滚动发生时检查情况。@matt我不太清楚您的意思。我刚刚发现了
ScrollViewDiEndDraging
和ScrollViewDiEndDraging
,因此我现在知道何时触发计算,但我仍然不确定如何计算图像是否可见。您知道所有单元格的帧和表视图的边界偏移量。因此,很容易知道什么是完全可见的。我认为您必须在图像视图上异步设置图像,在完成块中,您必须向主视图发送通知,并为特定单元格维护布尔值。