SWIFT: 如何修复单元格荧光笔并使整个集合视图滚动而不是荧光笔?

SWIFT: How to fix cell highlighter and make the whole collection view scroll instead of the highlighter?

我正在构建一个 TVOS 应用程序,其中我有这个 collectionView 当前单元格(滚动到的单元格)以橙色突出显示。
例如,此处用户滚动到第三个单元格:
我想要达到的目标:
当用户滚动到另一个单元格时,我希望 橙色方块 保留在 第一个单元格 整个集合中 向左滚动(如果用户向相反方向滚动,则向右滚动。
老实说,我不知道如何实现这一点,或者我应该使用什么。
我应该将整个集合视图嵌入到滚动视图中吗?
不管怎样,下面是该集合视图的实现方式:

extension MoviesViewController2: UICollectionViewDelegate, UICollectionViewDataSource {
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
            print("first function collectionView detected")
            return items2.count
    }
    
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier:
            cellIdentifier, for: indexPath) as! movieCardCell
              cell.movieImageView.sd_setImage(with: URL(string: items2[indexPath.item].imageURL))
            return cell
    }
    
    // Handle collectionViewItem selection
    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        print("didSelectItem\(indexPath)")
    }
    
    // Highlight the current cell
    func collectionView(_ collectionView: UICollectionView, didUpdateFocusIn context: UICollectionViewFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {
        if let pindex  = context.previouslyFocusedIndexPath, let cell = collectionView.cellForItem(at: pindex) {
            cell.contentView.layer.borderWidth = 0.0
            cell.contentView.layer.shadowRadius = 0.0
            cell.contentView.layer.shadowOpacity = 0.0
        }
        
        if let index  = context.nextFocusedIndexPath, let cell = collectionView.cellForItem(at: index) {
            cell.contentView.layer.borderWidth = 8.0
            cell.contentView.layer.borderColor = UIColor.orange.cgColor
            cell.contentView.layer.shadowColor = UIColor.orange.cgColor
            cell.contentView.layer.shadowRadius = 10.0
            cell.contentView.layer.shadowOpacity = 0.9
            cell.contentView.layer.shadowOffset = CGSize(width: 0, height: 0)
            collectionView.scrollToItem(at: index, at: [.centeredHorizontally, .centeredVertically], animated: true)
        }
    }
}

如果有人能回答上面的问题,那就太好了。也欢迎任何提示或我应该使用什么。

据我了解,您希望橙色矩形始终保持在同一个位置。滚动时你可以让它消失,并且 re-appear 一旦滚动停止可能但这是一个细节。

因此,您可以放置​​一个 UIView 与单元格具有相同尺寸(因为所有单元格似乎都具有相同的高度和宽度),并在用户停止滚动时使其显示。

无论如何,我正在再次查看您的问题,我认为我没有正确理解您的问题,特别是这部分 The current cell (The cell which has scrolled to), gets highlighted in Orange.When the user scrolls to another cell, I want the Orange square, to remain in the first cell

的结合

流程可能如下:

  • 将您的 collectionView 的大小设置为单个单元格大小。并向左对齐
  • 将您的 collectionView 的 clipsToBounds 属性 设置为 false
  • 启用 UICollectionView 分页。
  • 在您的 collectionView 之上放置一个矩形视图