代码之家  ›  专栏  ›  技术社区  ›  Ronny Westwood

手势识别器值重置

  •  0
  • Ronny Westwood  · 技术社区  · 7 年前

    我有一个简单的图像视图,添加了旋转和挤压手势识别器(从对象库添加)。我使用了2条基本的简单线和2个IBAction来旋转和缩放图像。所有动作都很好,但问题是:每个手势都重置了另一个值。如果我旋转图像,在进行挤压后,旋转值将恢复为法线,反之亦然。我想保留旋转和缩放的值。我希望问题是清楚的。谢谢大家。代码如下:

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

    这里是视图: View

    1 回复  |  直到 7 年前
        1
  •  1
  •   Ronny Westwood    7 年前

    我用这个代码解决了这个问题。一切正常

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

    (是的,是AppleDeveloper关于手势识别器的代码) 谢谢大家。