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
Deberá trabajar con la capa de vista.
Puede encontrar las pautas apropiadas en https://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreAnimation_guide/Articles/Layers.html
Espero que esto ayude.
Gracias,
Jim.
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;