手势识别器值重置
Gesture Recognizer Value Reset
我有一个带有简单图像的视图,其中添加了旋转和捏合手势识别器(从对象库添加)。我使用了 2 个基本的简单线条和 2 个 IBAction 来旋转和缩放图像。一切正常,但问题是:每个手势都会重置另一个值。如果我旋转图像并捏合后,旋转值 return 变为正常,反之亦然。我想保留旋转和缩放的值。我希望清楚这个问题。谢谢大家。这里的代码:
// 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
我用这段代码解决了问题。一切正常
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 的关于 GestureRecognizer 的代码)
感谢所有人。
代码上的另一块砖。
我有一个带有简单图像的视图,其中添加了旋转和捏合手势识别器(从对象库添加)。我使用了 2 个基本的简单线条和 2 个 IBAction 来旋转和缩放图像。一切正常,但问题是:每个手势都会重置另一个值。如果我旋转图像并捏合后,旋转值 return 变为正常,反之亦然。我想保留旋转和缩放的值。我希望清楚这个问题。谢谢大家。这里的代码:
// 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
我用这段代码解决了问题。一切正常
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 的关于 GestureRecognizer 的代码) 感谢所有人。 代码上的另一块砖。