Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift-UIImageView子类与手势-翻译不起作用_Ios_Swift_Uiimageview - Fatal编程技术网

Ios Swift-UIImageView子类与手势-翻译不起作用

Ios Swift-UIImageView子类与手势-翻译不起作用,ios,swift,uiimageview,Ios,Swift,Uiimageview,我正在Swift中对UIImageView进行子类化,并在其中添加了挤压、平移、缩放、旋转和轻触手势 我有一个基本的ViewController,其中添加了一个新的“PinchZoomImageView”作为子视图 一切都很好,除了当我更改子类视图的中心时平移手势稍微偏离外 func handlePan(recognizer:UIPanGestureRecognizer) { let translation = recognizer.translationInView(self)

我正在Swift中对UIImageView进行子类化,并在其中添加了挤压、平移、缩放、旋转和轻触手势

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

一切都很好,除了当我更改子类视图的中心时平移手势稍微偏离外

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)
}
平移图像并在屏幕上移动图像后,其边界将关闭

想法?

解决了它

我没有通过视图的中心属性(view.center)移动视图,而是通过view.transform(translating translation.x,translation.y)移动视图,它直接作用于视图,而不是通过.center移动帧

func handlePan(识别器:UIPangestureRecognitor){

    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)
}