Я поставлен в тупик, как получить определенное поведение из моего эксперимента с UIPanGestureRecognizer.
Когда пользователь касается и удерживает изображение, а затем пересекается с другим изображением, возникает поведение. В этом случае поведение заключается в том, что непрозрачность зеленого или красного изображения достигает 100%.
Как только пользователь продолжит перетаскивать изображение по экрану и разрывает пересечение с зеленым или красным изображением, я бы хотел, чтобы его непрозрачность вернулась к 50%. Мой поток контроля становится ужасным. Я продолжаю дорабатывать его, но в тупик, чтобы найти логику c, которая дает мне то, что я хочу.
visual
@objc func handlePan(sender: UIPanGestureRecognizer) {
let imageOneView = sender.view!
let translation = sender.translation(in: view)
switch sender.state {
case .began, .changed:
imageOneView.center = CGPoint(x: imageOneView.center.x + translation.x, y: imageOne.center.y + translation.y)
sender.setTranslation(CGPoint.zero, in: view)
view.bringSubviewToFront(imageOne)
if imageOne.frame.intersects(winImage.frame) {
winImage.alpha = 1
} else {
if imageOne.frame.intersects(loseImage.frame) {
loseImage.alpha = 1
winImage.alpha = 0.5
} else {
return
}
}
case .ended:
if imageOne.frame.intersects(winImage.frame) {
UIView.animate(withDuration: 0.3, animations: {
self.imageOne.alpha = 0.0
})
performSegue(withIdentifier: "winnerDetailView", sender: self)
} else {
if imageOne.frame.intersects(loseImage.frame) {
UIView.animate(withDuration: 0.3, animations: {
self.imageOne.alpha = 0.0
})
navigationItem.rightBarButtonItem?.isEnabled = true
loseImage.alpha = 0.5
} else {
UIView.animate(withDuration: 0.3) {
self.imageOne.frame.origin = self.imageOneOrgin
}
}
}
default:
break
}
}
И дополнительный код: https://github.com/ericmseitz/imageWar
Спасибо.