所以,你的目標是做一些事情的時候你得到並失去了特別是在tvOS下的一個單元的重點。問題在於你正在圍繞其他UI元素移動,因此上下文可能會有所不同。你必須在這種情況下改變你必須關心的那些UI。
,讓您實現正確的地方是FUNC didUpdateFocusInContext(),像這樣:
override func didUpdateFocusInContext(
context: UIFocusUpdateContext,
withAnimationCoordinator coordinator: UIFocusAnimationCoordinator
) {
coordinator.addCoordinatedAnimations({
if let cell = context.previouslyFocusedView as? UICollectionViewCell {
cell.layer.borderWidth = 2
}
if let cell = context.nextFocusedView as? UICollectionViewCell {
cell.layer.borderWidth = 5
}
},
completion: nil)
}
現在我們正在使用的重點協調,運用我們的邏輯:當先前的焦點
- 項目是UICollectionViewCell,那麼你必須將焦點釋放到下一個項目。你不應該在意下一個項目是什麼,因爲它可能是一個收集單元或不是。爲了好玩,在這種情況下,讓我們將邊框更改爲2.此值可以默認設置。
- 當下所關注的項目是UICollectionViewCell,那麼你已經處理它是一種類似的方式,否則會變得一團糟......所以,讓我們的邊界更改爲5
正如你所看到的,didUpdateFocusInContext()爲您當前的可視上下文中的所有視圖提供了一種通用方法。您可以對其他UI元素應用相同的方法。
玩得開心tvOS ...
感謝您的答案,我自己想出了這一個。但是這需要我將nextFocusedIndexPath存儲在一個屬性中,而我希望像'collectionView一樣更方便。indexPathOfCurrentlyFocusedItem' – xinatanil
是特定索引路徑的可能焦點單元格,即我們提供硬編碼索引路徑 – morroko