Не пересечение UIImageViews со случайным CGPoint - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть метод генерации случайной позиции моего UIImageViews. Некоторые взгляды имеют пересечение с другими. Как я могу проверить эти пересечения? Может быть, записать позицию в некотором массиве? Примерно так -

    self.randomArray.append(random)

    for views in randomArray {

        let rangeXmin = views.x - widthCoin / 2
        let rangeXmax = views.x + widthCoin / 2
        let rangeYmin = views.y - widthCoin / 2
        let rangeYmax = views.y + widthCoin / 2
        let rangeX = rangeXmin...rangeXmax
        let rangeY = rangeYmin...rangeYmax

        if rangeX.contains(randomX) || rangeY.contains(randomY) {
           print("Intersection")
        } else {
            print("Not intersection")
        }
     }

// generate coin place in table

func generateCoinPlace() -> CGPoint {

    let widthTableConstant = view.frame.width * 0.89
    let heightTableConstant = widthTableConstant * 1.04

    let minX = view.center.x - widthTableConstant / 2 + widthCoin / 4
    let maxX = view.center.x + widthTableConstant / 2 - widthCoin / 4
    let minY = tableImage.center.y - heightTableConstant / 2 + widthCoin / 4
    let maxY = tableImage.center.y + heightTableConstant / 2 - widthCoin / 4

    let randomX = CGFloat.random(in: minX..<maxX)
    let randomY = CGFloat.random(in: minY..<maxY)
    let random = CGPoint(x: randomX, y: randomY)

      // Add array here

    return random
}

Метод создания позиции на моем UIImageView // Анимация монеты забавы c flipTransition () {

    var transitionOptions = UIView.AnimationOptions()
    transitionOptions = [.transitionFlipFromTop, .showHideTransitionViews]

    UIView.transition(with: activeCoin!, duration: 0.6, options: transitionOptions, animations: {

    })

    UIView.animate(withDuration: 0.7, delay: 0.2, options: [.curveEaseOut], animations: {
            self.activeCoin!.center = self.generateCoinPlace()
            self.coinSound()
    }) { (_) in
    }
    UIView.animate(withDuration: 0.6, delay: 0.3, options: [], animations: {
        self.activeCoin!.transform = CGAffineTransform(scaleX: 0.8, y: 0.8)
    }) { [weak self] (_) in
        self?.putCoinStart()
    }

}

Спасибо за помощь.

1 Ответ

0 голосов
/ 25 февраля 2020

Вы можете попробовать это условие

(rangeX.contains(randomX - widthCoin / 2) || rangeX.contains(randomX + widthCoin / 2)) && (rangeY.contains(randomY - widthCoin / 2) || rangeY.contains(randomY + widthCoin / 2))
...