我一直在努力争取使用UIFocusGuide。
所以,基本上我有一个像下面这样的拼图,我希望用户能够按照一定的顺序(从左到右)聚焦拼图。我能够将第一个焦点设置为第一个没问题(使用self.setNeedsFocusUpdate()/ self.updateFocusIfNeeded())。它不是那么糟糕,但问题是焦点不是正确的顺序(从左上角开始,然后是左,左,左)。
有时,当我向左击时,它会向下移动;当我点击它向右转,等等。当我尝试在调试模式下显示焦点指南时,这是一场灾难。问题是拼图块的大小不同,并且不总是在同一个y坐标上。
有没有办法为拼图定义方形区域?我花了很多时间,觉得我错过了什么。
有大量代码,但要放置每个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)
}