24.手势识别之UIPanGestureRecognizer

来源:互联网 发布:寂寞有多长 知乎 编辑:程序博客网 时间:2024/06/07 23:10

UIPanGestureRecognizer

它是拖动手势, 使用和前面的手势类似, 下面我们学习如何使用它

1. UIPanGestureRecognizer的创建

我们实现一个图片随着手指的移动而移动:

import UIKitclass ViewController: UIViewController {    var imageView: UIImageView!    override func viewDidLoad() {        super.viewDidLoad()        self.imageView = UIImageView(image: UIImage(named: "beautiful"))        self.imageView.center = self.view.center        self.view.addSubview(imageView)        let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: "panAction:")        self.view.addGestureRecognizer(panGestureRecognizer)    }    override func didReceiveMemoryWarning() {        super.didReceiveMemoryWarning()        // Dispose of any resources that can be recreated.    }    func panAction(panGestureRecognizer: UIPanGestureRecognizer) {        // 获取触摸点在当前view中的位置        let pos = panGestureRecognizer.locationInView(self.view)        self.imageView.center = pos    }}

运行程序:
创建

2. UIPanGestureRecognizer详解

我们查看它的定义:

@available(iOS 3.2, *)public class UIPanGestureRecognizer : UIGestureRecognizer {    // 最少触摸手指数, 默认是1    public var minimumNumberOfTouches: Int     // 最多触摸手指数, 默认是UINT_MAX    public var maximumNumberOfTouches: Int     // 获取屏幕坐标系转为指定view的自身坐标系后的坐标    public func translationInView(view: UIView?) -> CGPoint    public func setTranslation(translation: CGPoint, inView view: UIView?)    // 在指定的view中坐标系统中的拖动速度    public func velocityInView(view: UIView?) -> CGPoint}

下面的这个方法

public func locationInView(view: UIView?) -> CGPoint

是定义在UIPanGestureRecognizer的父类UIGestureRecognizer中

3. 完整代码

同第一部分

1 0
原创粉丝点击