use*_*425 9 xcode ios swift swift4 swift5
我有类似的东西:
如您所见,我有一个表格视图,并且在每个表格视图单元格中,我都有一个集合视图。集合视图是水平的(以复制轮播),以便用户可以滑动浏览图像和视频库。这是另一种方式来描绘它:
Controller -> Table View -> Table View Cells -> Collection View (the carousel) -> Collection View Cells (the carousel images/videos)
我想要实现的是当用户滚动浏览表视图时,轮播中的视频自动播放。当然,要做到这一点,需要做到以下几点:
然而,这说起来容易做起来难。我之前问过如何确定视图在屏幕上是否可见,所以我现在知道该怎么做。
我的问题围绕着我应该如何构建我的代码。
在我的控制器类中,我有以下内容:
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
isCollectionViewVisible()
}
func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
if (!decelerate) {
isCollectionViewVisible()
}
}
func isCollectionViewVisible() {
for visibleCell in self.tableView.visibleCells {
guard let cell = visibleCell as? MyTableViewCell else {
continue
}
if let myCollectionView = cell.collectionView {
let visibleRect = self.tableView.bounds
let myCollectionViewRect = myCollectionView.convert(myCollectionView.bounds, to: tableView)
if visibleRect.contains(myCollectionViewRect) {
// Collection view is visible
} else {
// Collection view is hidden, either partially or fully
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以现在,当用户滚动时,它会检查表格视图单元格的集合视图是否完全可见。我应该如何从这里开始?我如何告诉第一个带有可见视频的集合视图播放视频(假设我已经完成了视频代码)?
其次,封装此代码的最佳方法是什么(包括上述isCollectionViewVisible()函数,以便我不必在所有控制器中重复代码?
非常感谢!
Here\xe2\x80\x99s 是一个解决方法。
\n\n func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { \n\n let cell = tableView.dequeueReusableCell(withIdentifier identifier: \xe2\x80\x9ccellIdentifier\xe2\x80\x9d for indexPath: indexPath) as! YourTableViewCell\n\n\n if cell == tableView.visibleCells.first { // the first element is guaranteed to be fully visible.\n\n guard let collectionView = cell.collectionView else { return } // to avoid crash when scrolling fast.\n\n if let videoCell = collectionView.visibleCells.first(where : { cell in cell.hasVideo() }) {\n // however you use to tell if cell has image or video.\n videoCell.play()\n }\n\n }\n\n\n }\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
979 次 |
| 最近记录: |