作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
如何在 Swift 中实现 Tinder 效果?
我的意思是,我有一张图片,如果我向右滑动则接受,如果向左滑动则拒绝。
我可以用下面的代码来做:
@IBAction func SwipeRight(sender: UISwipeGestureRecognizer) {
UIView.animateWithDuration(1) {
self.Imagem.center = CGPointMake(self.Imagem.center.x - 150, self.Imagem.center.y )
}
//other things after acception
}
和
@IBAction func SwipeLeft(sender: UISwipeGestureRecognizer) {
UIView.animateWithDuration(1) {
self.Imagem.center = CGPointMake(self.Imagem.center.x + 150, self.Imagem.center.y )
}
//other things after rejection
}
但这样用户就无法取消操作。我希望如果用户滑动到距离边缘(左或右)的增量距离,它会出现一个图像让用户知道,如果他结束移动, Action 就会发生。否则,用户可以在不结束运动的情况下返回大于delta的距离,并且该 Action 将被取消。
最佳答案
我要感谢提出解决方案的人。遵循我在 Stack Overflow 的很多人的大力帮助下开发的解决方案:
@IBAction func Arrastei(sender: UIPanGestureRecognizer) {
var origem = CGPoint(x: 0, y: 0)
var translation : CGPoint = sender.translationInView(Imagem)
var txy : CGAffineTransform = CGAffineTransformMakeTranslation(translation.x, -abs(translation.x) / 15)
var rot : CGAffineTransform = CGAffineTransformMakeRotation(-translation.x / 1500)
var t : CGAffineTransform = CGAffineTransformConcat(rot, txy);
Imagem.transform = t
if (translation.x > 100) {
LbResultado.textColor = btVerdadeiro.textColor
LbResultado.text = btVerdadeiro.text
LbResultado.hidden = false
} else {
if (translation.x < -100) {
LbResultado.textColor = btFalso.textColor
LbResultado.text = btFalso.text
LbResultado.hidden = false
} else {
LbResultado.hidden = true
}
}
if sender.state == UIGestureRecognizerState.Ended {
if (translation.x > 100) {
objJogo.Rodada_Vigente!.Responder(true)
} else {
if (translation.x < -100) {
objJogo.Rodada_Vigente!.Responder(false)
} else {
sender.view.transform = CGAffineTransformMakeTranslation(origem.x, origem.y)
sender.view.transform = CGAffineTransformMakeRotation(0)
}
}
}
}
此解决方案使用:
Imagem --> UIImageView
- 接受或拒绝
LbResultado --> UITextView
- 向用户显示他处于接受或拒绝区域
没有数学计算来设置旋转和平移。我使用的值给我带来了良好的视觉效果。
操作(接受和拒绝)区域是当用户将图像向左(拒绝)或向右(接受)拖动超过 100 像素时。如果用户在操作区域外结束移动,图像将返回到其原始位置。
如果有人建议改进此代码,我将很高兴。
关于ios - Swift - 火种效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24582255/
我想在“匹配”之后,向所有比赛发送介绍信息。你知道一种轻松发送的方法吗?(我使用 Bluestacks) 提前致谢。问候。 最佳答案 只需传递 session.send()在session.dialo
我是一名优秀的程序员,十分优秀!