objective animatedimage iphone uiimageview

iphone - animatedimage - Necesita ayuda sobre contentMode y autoresizingMaster of UIImageView



objective c uiimage (4)

tengo una imagen como esta que se presentará en el modo Paisaje

entonces, si gira el dispositivo a Vertical, cómo presentar una imagen como esta



Parece que lo que estás tratando de hacer es recortar la imagen de la derecha, dejando la parte superior, izquierda e inferior iguales.

Dos cosas para probar:

1) Subclase UIView y en el método drawRect , ajuste el rect y dibuje la imagen recortada usando CGContextDrawImage (context, rect, sourceImage.CGImage) .

2) Usa CALayers. Puede ajustar la ''contentsRect'' de la capa de imageView:

CALayer* imageLayer = imageView.layer; imageLayer.masksToBounds = YES; CGRect rect; if (inPortrait) rect = CGRectMake(0.0, 0.0, 0.5, 1.0); // half size else rect = CGRectMake(0.0, 0.0, 1.0, 1.0); // full size imageLayer.contentsRect = rect;

Esto corta la imagen por la mitad a lo largo del ancho. masksToBounds se encarga de recortar subcapas (en caso de que las tengas). Puede ajustar el contentsRect Rectángulo de la unidad para ajustar donde desea el corte. También es posible que desee ajustar los propios límites de imageView para que coincida con el tamaño.

Esto tiene una ventaja añadida en cuanto a que el ajuste de los contenidos. Rect se anima automáticamente, por lo que cuando haces la rotación, el ancho se anima y desaparece.


Use un UIImageView con estas configuraciones:

imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); imageView.contentMode = UIViewContentModeScaleAspectFit;


// Set the layer contents view.layer.contents = [image CGImage]; // Stretch so that contents overflows the edges and keeps aspect ratio view.layer.contentsGravity = kCAGravityResizeAspectFill; // Clip off the overflow view.layer.masksToBounds = YES; // Set the frame CGRect frame; frame.origin = CGPointZero; frame.size = view.superview.bounds.size; view.frame = frame; // Make sure it resizes when the superview does view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;