我有一个UIImageView
作为subview
的UIView
(帧大小300 x 300)。我的UIImage
可能是肖像,风景或一些奇怪的尺寸。如何在UIView
框架尺寸内填写UIImage
而不将图片延伸至300 x 300?UIImageView填写UIView
这样做的目的,我将添加另一个UIImageView
作为图像边框。 请帮忙。
谢谢。
我有一个UIImageView
作为subview
的UIView
(帧大小300 x 300)。我的UIImage
可能是肖像,风景或一些奇怪的尺寸。如何在UIView
框架尺寸内填写UIImage
而不将图片延伸至300 x 300?UIImageView填写UIView
这样做的目的,我将添加另一个UIImageView
作为图像边框。 请帮忙。
谢谢。
[img setContentMode:UIViewContentModeScaleAspectFit];
UIViewContentModeScaleAspectFit:由 缩放以适合视图的大小的内容保持纵横比。视图边界的任何剩余区域都是透明的。
或[img setContentMode:UIViewContentModeScaleAspectFill];
UIViewContentModeScaleAspectFill:缩放内容来填充视图的大小。部分内容可能会被剪辑以填充视图的边界。
如果你裁剪子视图,那么您需要根据您想要把它放在上海华做
[imgView clipToBounds:YES];
使用UIImageView的contentMode属性。
编辑:和设定的图像尺寸,以300×。
[image setContentMode:UIViewContentModeScaleToFill];
设置的UIImageView
的contentMode属性要么这个值:
UIViewContentModeCenter,
UIViewContentModeTop,
UIViewContentModeBottom,
UIViewContentModeLeft,
UIViewContentModeRight,
UIViewContentModeTopLeft,
UIViewContentModeTopRight,
UIViewContentModeBottomLeft,
UIViewContentModeBottomRight,
由于这个值:
UIViewContentModeScaleToFill,
UIViewContentModeScaleAspectFit,
UIViewContentModeScaleAspectFill,
确实会使图像成为300 x 300,这是您不想要的。
有没有办法将它们合并?我想要的是:假设100x10的图像和全屏UIImageView。我希望它扩展到水平尺寸等于UIImageView宽度(对于iPhone来说为320),并且生成的图像(现在为320x32)位于顶部。我试过这imgview.contentMode = UIViewContentModeScaleAspectFit | UIViewContentModeTop;但它不起作用。它只是UIViewContentModeTop部分(顶部是100x10)。 – Gik 2012-11-09 13:47:55
@Gik - 你有没有办法做到这一点。我现在正在遇到一模一样的问题。 – 2015-07-22 09:55:03
我使用了一招。我“创建”了另一幅图像(来自原始图像),拉伸以填充较小的尺寸,然后用我“失踪”的像素填充。所以最后我从原始的300x300图像。如果你想我可以发布代码。 – Gik 2015-08-31 10:48:11
啊我只是重新读你在问什么,我知道你现在的问题是什么。
您的UIImageView
的框架会发生变化,并且您的图像会发生变化。你不希望你的形象改变,但你想你的ImageView
调整来填补它被包含在视图中。
UPDATE
我想通了。
[self.imageView setContentMode:UIViewContentModeCenter];
无论什么方向,大小都保持不变。
您还可以将其设置为对齐顶部,底部,左侧,右侧,左上角,右上角,左下角,右下角,所有这些仅帮助对齐图像并且不重绘或重新调整大小图片。
这有帮助吗?
如果我重绘,它会拉伸我的形象。有没有选择不舒展? – RockBaby 2012-03-01 19:00:45
我试图使用上述2种模式,我的图像不适合300 x 300 – RockBaby 2012-03-01 18:34:27
ivEditImage = [[UIImageView alloc] initWithImage:imgChoosen]; ivEditImage.frame = vwEditingImage.frame; [ivEditImage setContentMode:UIViewContentModeScaleAspectFill]; – RockBaby 2012-03-01 18:38:53
即使'UIViewContentModeScaleAspectFit'也没有做到这一点? – 2012-03-01 20:14:41