¿Cómo determinar las coordenadas de imagen para una imagen recortada grande dentro de un UIImageView?

StackOverflow https://stackoverflow.com/questions/1813432

Pregunta

Con respecto al iPhone SDK:

Tengo una imagen .png de 512 x 512 píxeles, y quiero mostrarla dentro de un UIImageView de 200 x 200 píxeles con recorte (con resolución nativa, sin zoom, ajuste o rotación). ¿Hay alguna manera de determinar las coordenadas de la imagen que son visibles dentro del UIImageView?

Por ejemplo, si la imagen está en el centro exacto del UIImageView, entonces quiero saber cuáles son las coordenadas de la imagen en los puntos (0,0) y (200,200) de UIImageView, que serán (156,156) y ( 356,356), respectivamente, para la imagen que se muestra.

Planeo implementar " pan " y "zoom" funciona en algún momento, pero quiero saber cómo abordar este problema primero. La referencia de clase UIImageView no parecía útil ... Esperaba evitar usar una UIView, pero si es necesario, iré por esa ruta.

¡Gracias!

¿Fue útil?

Solución 2

Gracias por tu ayuda. Resolver las funciones de panorámica / zoom se volvió trivial después de implementar UIScrollView. La implementación de UIScrollView me permite determinar las coordenadas que necesitaba con los valores myScrollView.bounds.origin.x y myScrollView.bounds.origin.y ... el zoom aún requiere cálculo - como dijiste anteriormente, pero estoy en el camino correcto ahora.

aquí está el código que usé para hacer el UIScrollView (basado en múltiples fuentes disponibles en la red y este sitio - Apple's ScrollViewSuite fue particularmente útil. Aquí está el código que utilicé en la sección (void) viewDidLoad de mi programa, espero que otros puedan encontrarlo útil :

UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[imageArray objectAtIndex:0]]; //imageArray is an array/stack of images...
[self setMyImage:tempImageView]; //myImage is of type UIImageView
[myImage setTag:100]; //set this to an 'arbitrary' value so that when I update the scrollview I can remove the current image...
[tempImageView release];

myScrollView.contentSize = CGSizeMake(myImage.frame.size.width, myImage.frame.size.height);
myScrollView.maximumZoomScale = 10.0;
myScrollView.minimumZoomScale = 0.15;
myScrollView.clipsToBounds = YES;
myScrollView.delegate = self;

[myScrollView addSubview:myImage];

Otros consejos

Tienes razón sobre lo que has visto en la referencia de UIImageView: no hay una manera fácil de hacerlo usando UIImageView solo. Debería tener en cuenta cosas como el contentMode de UIImageView o limitarse a calcular solo la posición de un solo UIViewContentMode.

Sin embargo, cuando finalmente pueda implementar la panorámica y el zoom, usará un UIScrollView con un UIImageView como una subvista de ese UIScrollView. En ese punto, sería más sensato dimensionar su UIImageView inicialmente al tamaño de cualquier imagen que esté mostrando (podría ser dinámica). Luego puede determinar dónde está la imagen determinando dónde está la imagen vista , que es algo que puede lograr de manera mucho más simple y con solo un poco de matemática.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top