¿Cómo se puede habilitar el efecto de zoom en UIScrollView?Cómo habilitar el zoom en UIScrollView
Respuesta
Tenga una mirada en this vídeo
Descripción del vídeo:
- Añadir
UIScrollViewDelegate
delegado - Tome un
UIScrollView
- Tome un UIImageView que va a ser añadido en ScrollView
- Coloque la vista de desplazamiento en la ventana principal
- Conectar los delegados
- Configuración imageView
- escala Conjunto máx/mín de zoom [Lo central aquí]
- implementar el método delegado para volver la vista
respuesta es here:
Los la vista de desplazamiento también maneja el zoom y la panorámica del contenido. Cuando el usuario realiza un gesto de pellizco o de pinzamiento, la vista de desplazamiento ajusta el desplazamiento y la escala del contenido. Cuando termina el gesto , el objeto que gestiona la vista de contenido debe actualizar las subvistas según sea necesario. (Tenga en cuenta que el gesto puede finalizar y un dedo aún podría estar hacia abajo.) Mientras el gesto está en progreso, la vista de desplazamiento no envía ninguna llamada de seguimiento a la subvista.
La clase UIScrollView puede tener un delegado que debe adoptar el protocolo UIScrollViewDelegate. Para hacer zoom y paneo para trabajar, el delegado debe implementar ambos viewForZoomingInScrollView: y scrollViewDidEndZooming: withView: atScale :; Además, la escala de zoom máxima (maximumZoomScale) y mínima ( minimumZoomScale) debe ser diferente.
Así:
- Se necesita un delegado que implementa
UIScrollViewDelegate
y está previsto quedelegate
en suUIScrollView
ejemplo - En su delegado tiene que poner en práctica un método:
viewForZoomingInScrollView:
(, que debe devolver el Vista de contenido que le interesa ampliar). También puede implementarscrollViewDidEndZooming:withView:atScale:
opcionalmente. - En su instancia
UIScrollView
, debe configurarminimumZoomScale
ymaximumZoomScale
para que sean diferentes (son 1.0 por defecto).
Nota: Lo interesante de esto es lo que si quieres ruptura zoom. ¿Es suficiente devolver nil
en el método viewForZooming...
? Se rompe el zoom, pero algunos de los gestos se desordenarán (por dos dedos). Por lo tanto, para interrumpir el zoom, debe establecer la escala mínima y máxima del zoom en 1.0.
No creo que esto funcione para iOS 5.0 y Xcode 4.3+ Estoy buscando lo mismo aquí, encontré que esto es para imágenes, pero puede ayudarle.
no es necesario configurar el tamaño del contenido de scrollview y la solución anterior funciona perfectamente en Xcode 4.3+ y iOS 5.0 también – Deepak
Aunque esta es una respuesta potencialmente bastante buena, es esencialmente una respuesta ** "solo vínculo" **. Debe incluir cierta información de sus enlaces para que si la información detrás de los enlaces se cambia o se pierde alguna vez, la respuesta todavía tenga sentido. Ver [este enlace] (http://meta.stackexchange.com/questions/225370/your-answer-is-in-another-castle-when-is-an-answer-not-an-answer) –
tener una lectura a través de este tutorial Ray Wenderlich:
http://www.raywenderlich.com/76436/use-uiscrollview-scroll-zoom-content-swift
Si usted sigue a través de la sección de 'desplazamiento y zoom de una imagen ampliada' se obtendrá una imagen y le permitirá pellizcar y hacer zoom
En caso de que el enlace se altera, aquí está la información principal: Pon este código en tu controlador de vista (esto establece la funcionalidad principal):
override func viewDidLoad() {
super.viewDidLoad()
// 1
let image = UIImage(named: "photo1.png")!
imageView = UIImageView(image: image)
imageView.frame = CGRect(origin: CGPoint(x: 0, y: 0), size:image.size)
scrollView.addSubview(imageView)
// 2
scrollView.contentSize = image.size
// 3
var doubleTapRecognizer = UITapGestureRecognizer(target: self, action: "scrollViewDoubleTapped:")
doubleTapRecognizer.numberOfTapsRequired = 2
doubleTapRecognizer.numberOfTouchesRequired = 1
scrollView.addGestureRecognizer(doubleTapRecognizer)
// 4
let scrollViewFrame = scrollView.frame
let scaleWidth = scrollViewFrame.size.width/scrollView.contentSize.width
let scaleHeight = scrollViewFrame.size.height/scrollView.contentSize.height
let minScale = min(scaleWidth, scaleHeight);
scrollView.minimumZoomScale = minScale;
// 5
scrollView.maximumZoomScale = 1.0
scrollView.zoomScale = minScale;
// 6
centerScrollViewContents()
}
añadir esto a la clase:
func centerScrollViewContents() {
let boundsSize = scrollView.bounds.size
var contentsFrame = imageView.frame
if contentsFrame.size.width < boundsSize.width {
contentsFrame.origin.x = (boundsSize.width - contentsFrame.size.width)/2.0
} else {
contentsFrame.origin.x = 0.0
}
if contentsFrame.size.height < boundsSize.height {
contentsFrame.origin.y = (boundsSize.height - contentsFrame.size.height)/2.0
} else {
contentsFrame.origin.y = 0.0
}
imageView.frame = contentsFrame
}
Y entonces esto si desea que el gesto de tocar dos veces para ser reconocido:
func scrollViewDoubleTapped(recognizer: UITapGestureRecognizer) {
// 1
let pointInView = recognizer.locationInView(imageView)
// 2
var newZoomScale = scrollView.zoomScale * 1.5
newZoomScale = min(newZoomScale, scrollView.maximumZoomScale)
// 3
let scrollViewSize = scrollView.bounds.size
let w = scrollViewSize.width/newZoomScale
let h = scrollViewSize.height/newZoomScale
let x = pointInView.x - (w/2.0)
let y = pointInView.y - (h/2.0)
let rectToZoomTo = CGRectMake(x, y, w, h);
// 4
scrollView.zoomToRect(rectToZoomTo, animated: true)
}
Si desea más detalles, lea el tutorial, pero eso lo cubre.
Aunque esto es una respuesta potencialmente bastante buena, es esencialmente una respuesta ** "solo enlace" **. Debe incluir cierta información de sus enlaces para que si la información detrás de los enlaces se cambia o se pierde alguna vez, la respuesta todavía tenga sentido. Ver [este enlace] (http://meta.stackexchange.com/questions/225370/your-answer-is-in-another-castle-when-is-an-answer-not-an-answer) –
Asegúrese de ajustar su viewController como el delegado scrollViews y poner en práctica:
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return imageView
}
- 1. Zoom en UIScrollView no funciona
- 2. ¿Cómo puedo obtener el nivel de zoom actual en UIScrollView?
- 3. ¿Cómo reinicio después de un zoom UIScrollView?
- 4. ¿Cómo hago zoom programáticamente un UIScrollView?
- 5. ¿Cómo habilitar los controles de zoom y pellizcar el zoom en un WebView?
- 6. Paginación UIScrollView con dos dedos y zoom
- 7. Habilitar/deshabilitar el zoom en iPhone safari con Javascript?
- 8. ¿Cómo puedo cancelar un rebote de zoom UIScrollView?
- 9. Cómo cancelar el desplazamiento en UIScrollView
- 10. ¿Cómo puedo activar el zoom en UIWebView que dentro de UIScrollView?
- 11. UIScrollView se desplaza demasiado después del zoom inicial
- 12. UIScrollView. ¿Alguna idea sobre la implementación de desplazamiento/zoom "infinito"?
- 13. iphone uiscrollview y uiimageview - configuración de zoom inicial
- 14. Cómo habilitar la (dos dedos) zoom in/out función de una imagen en Android
- 15. Obtener el rect visible de un contenido de UIScrollView
- 16. UIScrollView no rebota
- 17. ¿Cómo habilitar el toque múltiple en cocos2d?
- 18. Cómo habilitar el script java en webView
- 19. cómo habilitar el botón en extjs?
- 20. ¿Cómo puedo anidar un UIScrollView dentro de UIScrollView para que el usuario pueda desplazar el UIScrollView interno?
- 21. Uiscrollview con UIButtons: ¿cómo recrear el trampolín?
- 22. Cómo desplazar automáticamente UIScrollView usando el temporizador
- 23. Redibujar UIScrollVer contenido después de cada zoom
- 24. UIImageView y UIScrollView zooming
- 25. Obtenga el marco ampliado de UIScrollView relativo al tamaño original
- 26. Loop un UIScrollView
- 27. IOS: agregue imageview en scrollview para tener zoom
- 28. ¿Cómo puedo usar UIScrollView?
- 29. zoom automático en el safari de iphone
- 30. Cómo habilitar INNODB en mysql
@Jigar Joshi, su respuesta no es una respuesta, en realidad. No estoy seguro de por qué le pediste al OP que lo aceptara. Ahora tengo que ir a ver el video para recordar la respuesta a esta simple pregunta. –
@Yar si OP acepta + upvotes significa que su pregunta ha sido respondida con éxito. si tiene una pregunta diferente en mente, entonces no es la respuesta para esa pregunta. por favor devuelva su voto negativo improcedente –
@Jigar Joshi, no se puede revertir el voto atrasado ya que es demasiado tarde. Tendría que cambiar su respuesta. ¿Por qué no agregar algunas instrucciones sobre cómo hacer lo que el OP quería hacer, que no requieren ver un video? –