检查 UITableViewCell 是不是完全可见以进行自动播放

Posted

技术标签:

【中文标题】检查 UITableViewCell 是不是完全可见以进行自动播放【英文标题】:Check if UITableViewCell is completely visible for automatic playback检查 UITableViewCell 是否完全可见以进行自动播放 【发布时间】:2017-03-16 12:20:15 【问题描述】:

我正在构建一个包含帖子供稿的社交媒体应用。当帖子在屏幕上完全可见时,需要开始播放分配给帖子的曲目。这是我现在的布局。

这是我想出的一段代码,但它只适用于时间线中的第一个帖子。

func scrollViewDidScroll(_ scrollView: UIScrollView) 
    
    let visibleCell = tableView.visibleCells.first as! HomeControllerTableViewCell
    
    
    let firstCellVisibleIndexPath = tableView.indexPathsForVisibleRows?.first
  
    
    if tableView.bounds.contains(tableView.rectForRow(at: firstCellVisibleIndexPath!))
      let fullyVisibleCell = tableView.cellForRow(at: firstCellVisibleIndexPath!) as! HomeControllerTableViewCell
      
      print(fullyVisibleCell.authorNameLabel.text)
      
    
    
  

请帮我弄清楚如何确定哪个单元格是完全可见的。

【问题讨论】:

您只测试第一个:tableView.visibleCells.first。相反,让 allvisibleCells = tableView.visibleCells,然后做一个 for 循环。 【参考方案1】:

这就是我最终确定哪个单元格在我的布局中完全可见的方式

func scrollViewDidScroll(_ scrollView: UIScrollView) 
    

    
    for item in tableView.indexPathsForVisibleRows!
      if tableView.bounds.contains(tableView.rectForRow(at: item))
        let fullyVisibleCell = tableView.cellForRow(at: item) as! HomeControllerTableViewCell
        
       
 
      
    
  

【讨论】:

【参考方案2】:
func scrollViewDidScroll(_ scrollView: UIScrollView) 
    let location = scrollView.panGestureRecognizer.location(in: tablePostView)
    guard let indexPath = tablePostView.indexPathForRow(at: location) else 
        print("could not specify an indexpath")
        return
    

    print("will begin dragging at row \(indexPath.row)")
    let cellRect = tablePostView.rectForRow(at: indexPath)
    let completelyVisible = tablePostView.bounds.contains(cellRect)
    print(completelyVisible)

【讨论】:

感谢您提交答案!与其只提交代码中的解决方案,不如尝试提供上下文。为什么 OPs 解决方案不起作用?为什么你的工作?有没有 OP 需要理解的概念?

以上是关于检查 UITableViewCell 是不是完全可见以进行自动播放的主要内容,如果未能解决你的问题,请参考以下文章

检查 UITableViewCell 上是不是已经存在 UIButton

检查是不是选择了 UITableViewCell,并且单元格离开了屏幕

如何检查 Windows 文件是不是可读/可写?

检查设置的图像是不是与缓存中的图像相同

iPhone - 是不是可以覆盖 UITableViewCell setSelected:animated

UITableViewCell 中的可编辑文本字段