gpt4 book ai didi

uicollectionview - UICollectionView 的自定义焦点引擎行为

转载 作者:行者123 更新时间:2023-12-04 08:54:59 29 4
gpt4 key购买 nike

我使用标准 UICollectionView与部分。我的单元格像网格一样排列。如果用户使用 Apple TV Remote 移动焦点,则所选方向的下一个单元格会正确聚焦。但是如果网格中有“间隙”,默认的焦点引擎会跳过部分。它这样做是为了聚焦一个单元格,该单元格可能位于几个部分之外但在同一列中。

简单示例:
有3个部分。第一部分有 3 个单元格。第二个有 2 个单元格,最后一个又有 3 个单元格。见下图:

enter image description here

如果绿色单元格被聚焦并且用户触摸向下方向,则黄色单元格被聚焦并且焦点引擎跳过第二部分。

我想强制它不能跳过任何部分。因此,我不想聚焦黄色单元格,而是希望聚焦蓝色单元格。

我了解到 Apple TV Focus 引擎在内部像网格系统一样工作,并且所描述的行为是默认行为。为了允许其他运动(例如对角线),我们需要通过放置隐形 UIFocusGuide 来帮助聚焦引擎s 可以将焦点引擎重定向到 preferredFocusedView .

因此,在下图中,将一个不可见的红色对焦指南放置在 UICollectionView 的空白处。部分会将向下焦点重定向到所需的蓝色单元格。我认为这将是理论上的完美解决方案。

enter image description here

但是我将如何添加 UIFocusGuide s 到 UICollectionView 的所有空格部分?我尝试了几件事,但没有任何效果。也许将其添加为装饰器 View ,但这似乎是错误的。或者作为额外的单元格,但这会破坏数据层并且约束 anchor 不起作用。

有没有人知道如何添加 UIFocusGuide s 到 UICollectionView ?

最佳答案

实现目标的两种方法。至少我尝试过并使它起作用。 =)。也可能有其他方式。

1:

实现目标的最简单方法是使用包含水平集合 View 的单元格添加垂直集合 View 。每个水平集合都是您的部分。

确保将以下代码添加到垂直集合 View 中:

func collectionView(collectionView: UICollectionView, canFocusItemAtIndexPath indexPath: NSIndexPath) -> Bool {
return false
}

2:

如果您想使用 UIFocusGuide,我认为添加焦点指南的好地方是部分标题。确保您的焦点指南位于部分标题中,并在切换到每个部分时更新 preferredFocusedView。在我的情况下,当我离开该部分时,我会分配每个部分的第一个单元格。

关于uicollectionview - UICollectionView 的自定义焦点引擎行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34120558/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com