【发布时间】:2020-02-07 18:08:43
【问题描述】:
我不知道如何从我的 UIPanGestureRecognizer 实验中获得某种行为。
当用户点击并按住一张图片,然后它与另一张图片相交时,就会触发一个行为。在这种情况下,行为是绿色或红色图像的不透明度变为 100%。
一旦用户继续在屏幕上拖动图像,并打破与绿色或红色图像的交叉点,我希望它的不透明度恢复到 50%。我的控制流越来越难看。我一直在调整它,但很难找到让我得到我想要的逻辑。
@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
谢谢。
【问题讨论】:
标签: ios swift xcode uipangesturerecognizer