tengo un UIImageView
, que quiero poder cambiar el tamaño y rotar, etc.
¿Se UIGestureRecognizer
puede agregar a UIImageView
?
Me gustaría agregar un reconocedor de rotación y pellizco a uno UIImageView
que se crearía en tiempo de ejecución.
¿Cómo se agregan estos reconocedores?
userInteractionEnabled
todavía debe establecerse en YES / true en Xcode 8 Objective-C / SwiftSí, se puede agregar un UIGestureRecognizer a un UIImageView. Como se indicó en la otra respuesta, es muy importante recordar habilitar la interacción del usuario en la vista de imagen estableciendo su
userInteractionEnabled
propiedad enYES
. UIImageView hereda de UIView, cuya propiedad de interacción de usuario está configuradaYES
de manera predeterminada, sin embargo, la propiedad de interacción de usuario de UIImageView está configuradaNO
de manera predeterminada.De los documentos UIImageView:
De todos modos, en la mayor parte de la respuesta. Aquí hay un ejemplo de cómo crear un
UIImageView
con aUIPinchGestureRecognizer
, aUIRotationGestureRecognizer
y aUIPanGestureRecognizer
.Primero, en
viewDidLoad
u otro método de su elección, cree una vista de imagen, dele una imagen, un marco y permita su interacción con el usuario. Luego crea los tres gestos de la siguiente manera. Asegúrese de utilizar su propiedad delegada (muy probablemente configurada como self). Esto será necesario para usar múltiples gestos al mismo tiempo.Estos son los tres métodos que se llamarán cuando se detecten los gestos en su vista. Dentro de ellos, verificaremos el estado actual del gesto, y si está en el inicio o el cambio
UIGestureRecognizerState
, leeremos la propiedad de escala / rotación / traducción del gesto, aplicaremos esos datos a una transformación afín, aplicaremos la transformación afín a la imagen. ver, y luego restablecer la escala de gestos / rotación / traducción.Finalmente y muy importante, necesitará utilizar el método UIGestureRecognizerDelegate
gestureRecognizer: shouldRecognizeSimultaneouslyWithGestureRecognizer
para permitir que los gestos funcionen al mismo tiempo. Si estos tres gestos son los únicos tres gestos que tienen esta clase asignada como su delegado, simplemente puede regresarYES
como se muestra a continuación. Sin embargo, si tiene gestos adicionales que tienen esta clase asignada como su delegado, es posible que deba agregar lógica a este método para determinar qué gesto es cuál antes de permitir que todos trabajen juntos.No olvide asegurarse de que su clase cumpla con el protocolo UIGestureRecognizerDelegate . Para hacerlo, asegúrese de que su interfaz se vea así:
Si prefiere jugar con el código en un proyecto de muestra en funcionamiento, puede encontrar el proyecto de muestra que he creado que contiene este código aquí.
fuente
Swift 4.2
y cuando se toca:
fuente
Solución Swift 2.0
Crea un reconocedor de gestos de tocar, pellizcar o deslizar en la misma mansión. A continuación, lo guiaré a través de 4 pasos para poner en marcha su reconocedor.
4 pasos
1.) Herede de
UIGestureRecognizerDelegate
agregarlo a la firma de su clase.2.) Controle el arrastre de su imagen a su viewController para crear un IBOutlet:
3.) En su viewDidLoad agregue el siguiente código:
4.) Cree la función que se llamará cuando toque su reconocedor de gestos. (Puede excluir el
= nil
si lo desea).Su código final debería verse así:
fuente
Acabo de hacer esto con swift4 agregando 3 gestos juntos en una sola vista
Aquí mi código de muestra
Cualquier pregunta, solo escribe para comentar. gracias
fuente
SWIFT 3 Ejemplo
No hay delegados de reconocimiento de gestos u otras implementaciones cuando sea necesario.
fuente
También puede arrastrar un reconocedor de gestos de toque a la vista de imagen en
Storyboard
. Luego crea una acción porctrl + drag
el código.fuente
Para el amante de los bloques, puede usar ALActionBlocks para agregar acción de gestos en el bloque
fuente