圆角图像

时间:2014-12-03 09:24:12

标签: ios objective-c uiimageview uiimage

我一直在努力用非方形图像做完美形状的圆形图像。我尝试用

制作它
[self.photoView.layer setCornerRadius:50.0f];
[self.photoView.layer setMasksToBounds:YES];

它变成了这样:

Not so perfectly rounded

我想让它完整圆润。

PhotoView的内容模式设置为Aspect Fill,它的高度和宽度通过自动布局固定为80x80。我无法理解。

我通过裁剪和缩放来制作圆形图像,但也希望为其添加边框,这样我需要重新创建新的uiimage来绘制边框。这是件昂贵的事情。我想使用photoView的图层来执行此操作。

感谢任何帮助。

5 个答案:

答案 0 :(得分:4)

您必须将角半径设置为width/height的一半(仅适用于方形对象),因此它将创建圆形视图。

[self.photoView.layer setCornerRadius:self.photoView.frame.size.height/2];

或将其设置为40.0f,因为您的身高和宽度为40x40。

答案 1 :(得分:4)

尝试使用此代码时,角半径应为所提供照片视图的widthheight的一半,且形状必须为方形。

所以代码是这样的:

[self.photoView.layer setCornerRadius:CGRectGetHeight(self.photoView.frame)/2];
[self.photoView.layer setMasksToBounds:YES];

答案 2 :(得分:2)

您可以使用图层和蒙版实现此目的:

CGFloat imWidth = photoView.frame.size.width;
CGFloat imHeight = photoView.frame.size.height;
CGFloat minSize = imWidth < imHeight ? imWidth : imHeight;
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = CGRectMake(imWidth * 0.5f - minSize * 0.5f, imHeight * 0.5f - minSize * 0.5f, minSize, minSize);
maskLayer.path = CGPathCreateWithEllipseInRect(CGRectMake(0, 0, minSize, minSize), nil);
photoView.layer.mask = maskLayer;

根据photoview.frame内的圆圈裁剪照片视图。 您可以将minSize更改为:CGFloat maxSize = imWidth > imHeight ? imWidth : imHeight; 如果你想要另一种效果。

答案 3 :(得分:1)

试试这个 导入QuartzCore #import <QuartzCore/QuartzCore.h>标题并使用UIImageView的图层属性。

self.photoView.layer.cornerRadius = self.photoView.frame.size.height/2;
self.photoView.clipsToBounds = YES;

答案 4 :(得分:1)

试试这段代码,

swift code:

声明

.callproc()

viewDidLoad或任何方法:

@IBOutlet weak var circleView: UIView!

目标-C代码:

声明UIImageView

circleView.layer.cornerRadius = circleView.frame.width/2
circleView.layer.borderWidth = 10
circleView.layer.borderColor = UIColor.blackColor().CGColor

viewDidLoad或任何方法,

@property (weak, nonatomic) IBOutlet UIImageView *myimageview;