我需要裁剪 a UIImage
,用设备相机拍摄,以便它适合另一个UIImage
,它代表 a frame
(带有圆形边框等)。检查下图:
使用纵横比填充
使用纵横比拟合
所以,我需要的是删除超出帧边界的图像多余部分。我尝试使用UIBezierPath
,CGImageRef
以及我在 Google 上搜索的其他方法,但我没有找到解决方案。
我需要裁剪 a UIImage
,用设备相机拍摄,以便它适合另一个UIImage
,它代表 a frame
(带有圆形边框等)。检查下图:
使用纵横比填充
使用纵横比拟合
所以,我需要的是删除超出帧边界的图像多余部分。我尝试使用UIBezierPath
,CGImageRef
以及我在 Google 上搜索的其他方法,但我没有找到解决方案。
在 Interface Builder 中,使用以下配置:
有两个重要的设置,即:
Mode: Aspect Fill
Clip Subviews
它也可以通过编程方式完成:
[imageView setContentMode:UIViewContentModeScaleAspectFill];
[imageView setClipsToBounds:YES];
这将正确地用图像填充视图,保持其纵横比并隐藏不适合的内容。
IBOutlet
在您的控制器中创建一个。
@property (retain)IBOutlet UIImageView* imageView;
并在-(void) viewDidLoad
集合
imageView.layer.masksToBounds = YES;
在界面生成器中,访问详细信息窗格(第四个)内的模式UIImageView
菜单,然后为您选择正确的菜单(我猜是“中心”或“方面适合”)。
旧答案:
您可以使用contentGravity
CALayer 的属性使其工作
一个常量,指定层的内容如何在其边界内定位或缩放。
@property(copy) NSString *contentsGravity
使用UIImageView
并做
imageView.contentMode = UIViewContentModeScaleAspectFit;