2009-04-02 21 views

Respuesta

19

Respuesta Original ha sido reemplazada por CoreAnimation en iOS4.

Así como dice Gold Thumb: puede hacerlo accediendo al CALayer de UIView. Específicamente su contentRect:

Del Apple Docs: El rectángulo, en el espacio de coordenadas de la unidad, que define la parte del contenido de la capa que se debe usar. Animable.

+0

Mal. Ver la respuesta de @ GoldThumb. –

+2

Justo en el momento de la publicación (2009!) He actualizado la respuesta para señalar a CALayer –

+0

¡Genial! Gracias por la corrección. –

4

No parece que la muestra MoveMe haga algo como lo que quiere. El PlacardView en él es del mismo tamaño que la imagen utilizada. El único cambio de tamaño realizado es una transformación de vista, que no afecta a la ventana gráfica de la imagen. Según lo entiendo, tienes una imagen grande y quieres mostrar una pequeña ventana gráfica en ella. No hay un método de clase simple para hacer esto, pero hay una función que puede usar para obtener los resultados deseados: CGImageCreateWithImageInRect (CGImageRef, CGRect) lo ayudará.

He aquí un breve ejemplo de usarlo:

CGImageRef imageRef = CGImageCreateWithImageInRect([largeImage CGImage], cropRect); 
[UIImageView setImage:[UIImage imageWithCGImage:imageRef]]; 
CGImageRelease(imageRef); 
12

¿Quieres pantalla la imagen de forma que está contenido dentro del UIImageView? En ese caso, simplemente cambie el modo contect de UIImageView a UIViewContentModeScaleToFill (si la relación de aspecto no tiene importancia) o UIViewContentModeScaleAspectFit (si desea mantener la relación de aspecto)

En IB, esto se puede hacer configurando el modo en el Inspector.

En el código, se puede hacer como

yourImageView.contentMode = UIViewContentModeScaleToFill; 

En caso de que desee mostrar la imagen grande como es el interior de un UIImageView, el mejor y más fácil manera de hacer esto sería tener la imagen ver dentro de UIScrollView. De esa forma podrá acercarse y alejarse en la imagen y también moverla.

Espero que ayude.

3

Muchas gracias. He encontrado una solución bastante simple que se ve así:

CGRect frameRect = myImage.frame; 
CGPoint rectPoint = frameRect.origin; 
CGFloat newXPos = rectPoint.x - 0.5f; 
myImage.frame = CGRectMake(newXPos, 0.0f, myImage.frame.size.width, myImage.frame.size.height); 

Solo muevo el marco alrededor. Sucede que partes de ese marco salen del puerto de visualización del iPhone, pero espero que esto no importe mucho. Hay una máscara sobre ella, por lo que no se ve raro. El usuario no cuenta cómo se hace.

0

Puede realizar la misma por:

UIImageView *imgVw=[[UIImageView alloc]initwithFrame:CGRectMake(x,y,height,width)];  
imgVw.image=[UIImage imageNamed:@""]; 
[self.view addSubView imgVw]; 
imgVw.contentMode = UIViewContentModeScaleToFill; 
22

Lo que se necesita es algo así como (por ejemplo,que muestra el 30% en 30% de la esquina superior izquierda de la imagen original):

imageView.layer.contentsRect = CGRectMake(0.0, 0.0, 0.3, 0.3); 

descripción de "contentsRect": El rectángulo, en la unidad de espacio de coordenadas, que define la parte de contenido de la capa que debería ser usado.

+2

¿Por qué el voto a favor? Esto funciona perfectamente si configura el 'contentMode' de imageView como' UIViewContentModeScaleAspectFill'. Asegúrese de habilitar también 'clipsToBounds'. –

Cuestiones relacionadas