【发布时间】:2019-05-02 09:29:34
【问题描述】:
我想要一个带有UIBezierPath(从上到下滑动)的动画图像视图被点击。但是我发现的每一个谷歌帮助都没有解决它。但它不会打印“点击”。
动画效果很好。也许有人有线索?
非常感谢您的帮助。
override func viewDidLoad() {
super.viewDidLoad()
let imageView = UIImageView(image: UIImage(named: "advent_button"))
let dimension = 25 + drand48() * 30
imageView.frame = CGRect(x: 0, y: 0, width: dimension, height: dimension)
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(handleImageTap))
imageView.addGestureRecognizer(tapGestureRecognizer)
imageView.isUserInteractionEnabled = true
let animation = CAKeyframeAnimation(keyPath: "position")
animation.path = customPath().cgPath
animation.duration = 20
animation.fillMode = .forwards
animation.isRemovedOnCompletion = false
animation.repeatCount = 0.5
animation.timingFunction = CAMediaTimingFunction(name: .easeOut)
imageView.layer.add(animation, forKey: nil)
view.addSubview(imageView)
}
@objc func handleImageTap() {
print ("clicked")
}
func customPath() -> UIBezierPath {
let path = UIBezierPath()
path.move(to: CGPoint(x: 200, y: 0))
let endpoint = CGPoint(x: 20 , y: 700)
let cp1 = CGPoint(x: 90, y: 250)
let cp2 = CGPoint(x: 180, y: 400)
path.addCurve(to: endpoint, controlPoint1: cp1, controlPoint2: cp2)
return path
}
【问题讨论】:
-
为什么不使用 uibutton 而不是 uiimageview。则无需添加手势
-
你试过了吗?使用 NSTimer stackoverflow.com/questions/12287267/…
-
使用按钮的行为相同。
标签: swift uiimageview uigesturerecognizer uitapgesturerecognizer