2012-03-01 104 views
5

我有一个UIImageView作为subviewUIView(帧大小300 x 300)。我的UIImage可能是肖像,风景或一些奇怪的尺寸。如何在UIView框架尺寸内填写UIImage而不将图片延伸至300 x 300UIImageView填写UIView

这样做的目的,我将添加另一个UIImageView作为图像边框。 请帮忙。

谢谢。

回答

13
尝试

[img setContentMode:UIViewContentModeScaleAspectFit];

UIViewContentModeScaleAspectFit:由 缩放以适合视图的大小的内容保持纵横比。视图边界的任何剩余区域都是透明的。

[img setContentMode:UIViewContentModeScaleAspectFill];

UIViewContentModeScaleAspectFill:缩放内容来填充视图的大小。部分内容可能会被剪辑以填充视图的边界。

如果你裁剪子视图,那么您需要根据您想要把它放在上海华做

[imgView clipToBounds:YES]; 
+0

我试图使用上述2种模式,我的图像不适合300 x 300 – RockBaby 2012-03-01 18:34:27

+0

ivEditImage = [[UIImageView alloc] initWithImage:imgChoosen]; ivEditImage.frame = vwEditingImage.frame; [ivEditImage setContentMode:UIViewContentModeScaleAspectFill]; – RockBaby 2012-03-01 18:38:53

+0

即使'UIViewContentModeScaleAspectFit'也没有做到这一点? – 2012-03-01 20:14:41

0

使用UIImageView的contentMode属性。


编辑:和设定的图像尺寸,以300×

0
[image setContentMode:UIViewContentModeScaleToFill]; 
1

设置的UIImageView的contentMode属性要么这个值:

UIViewContentModeCenter, 
    UIViewContentModeTop, 
    UIViewContentModeBottom, 
    UIViewContentModeLeft, 
    UIViewContentModeRight, 
    UIViewContentModeTopLeft, 
    UIViewContentModeTopRight, 
    UIViewContentModeBottomLeft, 
    UIViewContentModeBottomRight, 

由于这个值:

UIViewContentModeScaleToFill, 
    UIViewContentModeScaleAspectFit, 
    UIViewContentModeScaleAspectFill, 

确实会使图像成为300 x 300,这是您不想要的。

+3

有没有办法将它们合并?我想要的是:假设100x10的图像和全屏UIImageView。我希望它扩展到水平尺寸等于UIImageView宽度(对于iPhone来说为320),并且生成的图像(现在为320x32)位于顶部。我试过这imgview.contentMode = UIViewContentModeScaleAspectFit | UIViewContentModeTop;但它不起作用。它只是UIViewContentModeTop部分(顶部是100x10)。 – Gik 2012-11-09 13:47:55

+0

@Gik - 你有没有办法做到这一点。我现在正在遇到一模一样的问题。 – 2015-07-22 09:55:03

+0

我使用了一招。我“创建”了另一幅图像(来自原始图像),拉伸以填充较小的尺寸,然后用我“失踪”的像素填充。所以最后我从原始的300x300图像。如果你想我可以发布代码。 – Gik 2015-08-31 10:48:11

2

啊我只是重新读你在问什么,我知道你现在的问题是什么。

您的UIImageView的框架会发生变化,并且您的图像会发生变化。你不希望你的形象改变,但你想你的ImageView调整来填补它被包含在视图中。

UPDATE

我想通了。

[self.imageView setContentMode:UIViewContentModeCenter]; 

无论什么方向,大小都保持不变。

您还可以将其设置为对齐顶部,底部,左侧,右侧,左上角,右上角,左下角,右下角,所有这些仅帮助对齐图像并且不重绘或重新调整大小图片。

这有帮助吗?

+0

如果我重绘,它会拉伸我的形象。有没有选择不舒展? – RockBaby 2012-03-01 19:00:45