简体   繁体   中英

Gesture Recognizer Value Reset

I've a View with a simple image with adds a Rotation and Pinch gesture recognizer (adds from objects library). I've used 2 basic simple lines with 2 IBAction for rotating and zooming the image. All work fine but the problem is this: Each gesture reset the other value. If i rotates the image and after i do a pinch, the value of rotation return to normal and viceversa. I want keep the value for rotation and zoom. I hope was clear the problem. thanks to all. here the code:

//  ImageController.swift
//  SpImage
//
//  Created by Ronny Westwood on 06/09/17.
//  Copyright © 2017 RW2017. All rights reserved.
//

import UIKit

class ImageController: UIViewController {

    @IBOutlet weak var Image: UIImageView!

/// IMAGE OUTLET

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func rotationImage(_ sender: UIRotationGestureRecognizer) {
        Image.transform = view.transform.rotated(by: sender.rotation)
    }

    @IBAction func zoomImage(_ sender: UIPinchGestureRecognizer) {
        Image.transform = CGAffineTransform(scaleX: sender.scale, y: sender.scale)
    }

/// IMAGE ROTATION & IMAGE ZOOM

        override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

here the view: View

I solved the problem with this code. all work fine

class ImageController: UIViewController, UIGestureRecognizerDelegate {

    var delegate: UIGestureRecognizerDelegate?

    @IBOutlet weak var Image: UIImageView!

    override func viewDidLoad()
    {
        super.viewDidLoad()
    }

    @IBAction func rotationImage(_ gestureRecognizer : UIRotationGestureRecognizer)
    {
        if gestureRecognizer.state == .began || gestureRecognizer.state == .changed
        {
           gestureRecognizer.view?.transform = (gestureRecognizer.view?.transform.rotated(by: gestureRecognizer.rotation))!
           gestureRecognizer.rotation = 0.0;
        }
    }

    @IBAction func zoomImage(_ gestureRecognizer : UIPinchGestureRecognizer)
    {
        if gestureRecognizer.state == .began || gestureRecognizer.state == .changed
        {
           gestureRecognizer.view?.transform = (gestureRecognizer.view?.transform.scaledBy(x: gestureRecognizer.scale, y: gestureRecognizer.scale))!
           gestureRecognizer.scale = 1.0;
        }
    }

/// IMAGE ROTATION & IMAGE SCALE

    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool
    {
        return true
    }

/// ALLOW SIMULTANEOUS GESTURES DELEGATE

        override func didReceiveMemoryWarning()
    {
        super.didReceiveMemoryWarning()
    }
}

(yes, is the code from AppleDeveloper about the GestureRecognizer) thank to all. another brick on the code.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM