[英]How to guide tvOS focus items for curved SKNodes
我的tvOS應用使用SKNodes生成了一個游戲板,如下所示:
用線分隔的每個形狀都是可聚焦的SKNode(例如,每個有色楔形由5個SKNode組成,這些SKNode的大小逐漸靠近中心而逐漸減小)。
我的問題是,聚焦引擎無法聚焦下一個要聚焦的邏輯上最自然的下一節點(SKNode)。 這個問題是因為聚焦引擎邏輯是矩形的而我的SKNode是彎曲的。 從下面可以看到,從最外面的黃色SKNode向下滑動以嘗試找出下一個可聚焦項時存在一些固有的問題:
在上面的示例中,聚焦引擎根據節點的邊緣推斷出當前聚焦區域是紅色陰影矩形內的區域。 由於這種邏輯,聚焦的矩形重疊了不屬於當前聚焦節點的區域,包括第二個黃色SKNode的整個寬度。 因此,向下滑動時,聚焦引擎會將焦點跳過到第三個(中間)黃色SKNode。
如何解決這一焦點問題,以使我的SKNodes圓形游戲板在垂直和水平方向上的聚焦更加自然而又不會顯得那么零散? 這可能嗎? 也許使用UIFocusGuides?
您必須手動處理焦點。 使用下面列出的方法從上下文中檢查下一個焦點視圖。
func shouldUpdateFocus(in context: UIFocusUpdateContext) -> Bool
在此方法中,您將獲得焦點航向(UIFocusHeading)。 截取所需的方向,並將所需的下一個焦點視圖保存在某些屬性中。 通過調用以下方法來手動更新焦點
setNeedsFocusUpdate()
updateFocusIfNeeded()
這將觸發以下
preferredFocusEnvironments: [UIFocusEnvironment] { get }
在此檢查已保存的實例,並返回相同的實例。 這將幫助您根據需要手動處理焦點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.