我的照片就像这张图片一样,会出现在风景模式
上
所以如果将设备旋转到纵向,如何呈现这样的图像
答案 0 :(得分:12)
使用具有以下设置的UIImageView:
imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleHeight);
imageView.contentMode = UIViewContentModeScaleAspectFit;
答案 1 :(得分:7)
看起来你要做的就是将图像剪裁在右边,同时让顶部,左边和底部保持不变。
要尝试两件事:
1)子类UIView并在drawRect
方法中,调整矩形并使用CGContextDrawImage (context, rect, sourceImage.CGImage)
绘制剪切的图像。
2)使用CALayers。您可以调整imageView图层的“contentsRect”:
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;
将图像沿宽度切成两半。 masksToBounds
负责剪切子图层(如果你有它们)。您可以调整contentsRect
单位矩形以调整您希望截止的位置。您可能还想调整imageView自己的边界以匹配大小。
这有一个额外的好处,因为调整contentsRect是自动动画的,因此当您进行旋转时,宽度可以很好地进行动画制作。
答案 2 :(得分:3)
// 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;
答案 3 :(得分:0)
您必须使用视图的图层。
找到相应的指南希望这有帮助。
谢谢,
吉姆。