46

我需要裁剪 a UIImage,用设备相机拍摄,以便它适合另一个UIImage,它代表 a frame(带有圆形边框等)。检查下图:

在此处输入图像描述 使用纵横比填充

在此处输入图像描述 使用纵横比拟合

所以,我需要的是删除超出帧边界的图像多余部分。我尝试使用UIBezierPath,CGImageRef以及我在 Google 上搜索的其他方法,但我没有找到解决方案。

4

4 回答 4

128

在 Interface Builder 中,使用以下配置:

在此处输入图像描述

有两个重要的设置,即:

  1. Mode: Aspect Fill

  2. Clip Subviews

它也可以通过编程方式完成:

[imageView setContentMode:UIViewContentModeScaleAspectFill];
[imageView setClipsToBounds:YES];

这将正确地用图像填充视图,保持其纵横比并隐藏不适合的内容。

于 2013-08-17T05:34:23.317 回答
4

IBOutlet在您的控制器中创建一个。

@property (retain)IBOutlet UIImageView* imageView;

并在-(void) viewDidLoad集合

imageView.layer.masksToBounds = YES;
于 2013-08-09T17:05:31.723 回答
1

在界面生成器中,访问详细信息窗格(第四个)内的模式UIImageView菜单,然后为您选择正确的菜单(我猜是“中心”或“方面适合”)。

在此处输入图像描述

旧答案:

您可以使用contentGravityCALayer 的属性使其工作

一个常量,指定层的内容如何在其边界内定位或缩放。

       @property(copy) NSString *contentsGravity
于 2013-01-30T16:45:36.230 回答
-1

使用UIImageView并做

imageView.contentMode = UIViewContentModeScaleAspectFit;
于 2013-01-30T16:46:37.210 回答