使用UIFocusGuide聚焦tvOS

时间:2016-02-25 00:07:32

标签: swift tvos apple-tv

我一直在努力争取使用UIFocusGuide。

所以,基本上我有一个像下面这样的拼图,我希望用户能够按照一定的顺序(从左到右)聚焦拼图。我能够将第一个焦点设置为第一个没问题(使用self.setNeedsFocusUpdate()/ self.updateFocusIfNeeded())。它不是那么糟糕,但问题是焦点不是正确的顺序(从左上角开始,然后是左,左,左)。

有时,当我向左击时,它会向下移动;当我点击它向右转,等等。当我尝试在调试模式下显示焦点指南时,这是一场灾难。问题是拼图块的大小不同,并且不总是在同一个y坐标上。

有没有办法为拼图定义方形区域?我花了很多时间,觉得我错过了什么。

example

有大量代码,但要放置每个puzzlePiece(拼图是一个图像,其中canBecomedFocused为真)。 puzzleFrame是拼图的框架。我觉得要分享这个代码,它根本没有优化,我试图主要把这个重点放在一边。

switch (i) {
            case 1:
                let positionFinale = CGPoint(x: puzzleFrame.frame.origin.x+6, y: puzzleFrame.frame.origin.y+6)
                puzzlePiece.frame.origin = positionFinale
            case 2:
                let positionFinale = CGPoint(x: puzzleFrame.frame.origin.x+214, y: puzzleFrame.frame.origin.y+6)
                puzzlePiece.frame.origin = positionFinale
            case 3:
                let positionFinale = CGPoint(x: puzzleFrame.frame.origin.x+407, y: puzzleFrame.frame.origin.y+6)
                puzzlePieceFinale.frame.origin = positionFinale
            case 4:
                let positionFinale = CGPoint(x: puzzleFrame.frame.origin.x+674, y: puzzleFrame.frame.origin.y+6)
                puzzlePiece.frame.origin = positionFinale
            case 5:
                let positionFinale = CGPoint(x: puzzleFrame.frame.origin.x+6, y: puzzleFrame.frame.origin.y+222)
                puzzlePiece.frame.origin = positionFinale
            case 6:
                let positionFinale = CGPoint(x: puzzleFrame.frame.origin.x+215, y: puzzleFrame.frame.origin.y+218)
                puzzlePiece.frame.origin = positionFinale
            case 7:
                let positionFinale = CGPoint(x: puzzleFrame.frame.origin.x+438, y: puzzleFrame.frame.origin.y+196)
                puzzlePiece.frame.origin = positionFinale
            case 8:
                let positionFinale = CGPoint(x: puzzleFrame.frame.origin.x+676, y: puzzleFrame.frame.origin.y+216)
                puzzlePiece.frame.origin = positionFinale
            case 9:
                let positionFinale = CGPoint(x: puzzleFrame.frame.origin.x+6, y: puzzleFrame.frame.origin.y+424)
                puzzlePiece.frame.origin = positionFinale
            case 10:
                let positionFinale = CGPoint(x: puzzleMain.frame.origin.x+216, y: puzzleMain.frame.origin.y+449)
                puzzlePiece.frame.origin = positionFinale
            case 11:
                let positionFinale = CGPoint(x: puzzleFrame.frame.origin.x+408, y: puzzleFrame.frame.origin.y+447)
                puzzlePiece.frame.origin = positionFinale
            case 12:
                let positionFinale = CGPoint(x: puzzleFrame.frame.origin.x+644, y: puzzleFrame.frame.origin.y+445)
                puzzlePiece.frame.origin = positionFinale

            default:
                print(i)
        }

0 个答案:

没有答案