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