¿Cómo mostrar en UIImage solo una parte de la image?

Tengo UIImageView en el que estoy mostrando una image de 50×100.

Quiero mostrar solo una parte de la image 50×50 (parte superior)?

¿Cómo puedo hacer eso?

Podría tener una solución para ti. A ver si esto funciona. En Interface Builder hay una opción sobre las properties de relleno del contenido de la image. Puede configurarlo en la top-left . Sigue la image en el generador de interfaces –

introduzca la descripción de la imagen aquí

Después de esto, establezca el tamaño de UIImageView en 50×50 con "subidas de clips" marcadas …

Puede recortar la image utilizando CGImageCreateWithImageInRect , que es la primitiva de cuarzo que trabaja en CGImageRef, por lo que tendría algo como:

 CGImageRef imageRef = CGImageCreateWithImageInRect(originalImage.CGImage, cropRect); UIImage* outImage = [UIImage imageWithCGImage:imageRef scale:originalImage.scale orientation:originalImage.imageOrientation]]; CGImageRelease(imageRef); 

Cuando calcule cropRect , tenga en count que se debe dar en píxeles, no en puntos, es decir:

 float scale = originalImage.scale; CGRect cropRect = CGRectMake(0, 0, originalImage.size.width * scale, originalImage.size.height * 0.5 * scale); 

donde el factor 0.5 explica el hecho de que solo quieres la mitad superior.

Si no quiere ir a un nivel bajo, puede agregar su image a una UIView como color de background y usar la propiedad clipToBounds CALayer para hacer el recorte:

 myView.backgroundColor = [UIColor colorWithBackgroundPattern:myImage]; myView.layer.clipToBounds = YES; 

También, establezca los límites myView consecuencia.

La forma muy simple de mover una gran image dentro de UIImageView de la siguiente manera.

Dejemos que tengamos la image de tamaño (100, 400) representando 4 estados de alguna image uno debajo de otro. Queremos mostrar la segunda image con offsetY = 100 en UIImageView de tamaño cuadrado (100, 100). La solucion es:

 UIImageView *iView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; CGRect contentFrame = CGRectMake(0, 0.25, 1, 0.25); iView.layer.contentsRect = contentFrame; iView.image = [UIImage imageNamed:@"NAME"]; 

Aquí, contentFrame se normaliza en relación con el tamaño real de UIImage . Entonces, "0" significa que comenzamos una parte visible de la image desde el borde izquierdo, "0.25" significa que tenemos un desplazamiento vertical 100, "1" significa que queremos mostrar el ancho completo de la image y, por último, "0.25" significa que queremos mostrar solo 1/4 parte de la image en altura.

Por lo tanto, en las coorderadas de image locales, mostramos el siguiente cuadro

 CGRect visibleAbsoluteFrame = CGRectMake(0*100, 0.25*400, 1*100, 0.25*400) or CGRectMake(0, 100, 100, 100);