Swift - 带手势的UIImageView子类 - 翻译不起作用

时间:2015-09-02 04:37:00

标签: ios swift uiimageview

我在Swift中继承了UIImageView,并在其中添加了Pinch,Pan,Zoom,Rotate和Tap Gestures。

我有一个基本的ViewController,并添加了一个新的“PinchZoomImageView”作为子视图。

一切正常,但是当我更改子视图的中心时,Pan Gesture Translate略有偏差。

func handlePan(recognizer:UIPanGestureRecognizer) {

    let translation = recognizer.translationInView(self)

    if let view = recognizer.view {
        view.center = CGPoint(x:view.center.x + translation.x, y:view.center.y + translation.y)
    }

    recognizer.setTranslation(CGPointZero, inView: self)
}

平移图像并在屏幕上移动图像后,它的界限已关闭。

想法?

1 个答案:

答案 0 :(得分:3)

解决了!

不是通过它的中心属性(view.center)移动视图,而是使用view.transform(翻译translation.x,translation.y)移动视图,该视图直接作用于视图而不是通过.center框架。

func handlePan(识别器:UIPanGestureRecognizer){

    let translation = recognizer.translationInView(recognizer.view)

    if let view = recognizer.view {
        view.transform = CGAffineTransformTranslate(view.transform, translation.x, translation.y)
    }

    recognizer.setTranslation(CGPointZero, inView: self)
}