我一直在努力用非方形图像做完美形状的圆形图像。我尝试用
制作它[self.photoView.layer setCornerRadius:50.0f];
[self.photoView.layer setMasksToBounds:YES];
它变成了这样:
我想让它完整圆润。
PhotoView的内容模式设置为Aspect Fill,它的高度和宽度通过自动布局固定为80x80。我无法理解。
我通过裁剪和缩放来制作圆形图像,但也希望为其添加边框,这样我需要重新创建新的uiimage来绘制边框。这是件昂贵的事情。我想使用photoView的图层来执行此操作。
感谢任何帮助。
答案 0 :(得分:4)
您必须将角半径设置为width/height
的一半(仅适用于方形对象),因此它将创建圆形视图。
[self.photoView.layer setCornerRadius:self.photoView.frame.size.height/2];
或将其设置为40.0f
,因为您的身高和宽度为40x40。
答案 1 :(得分:4)
尝试使用此代码时,角半径应为所提供照片视图的width
或height
的一半,且形状必须为方形。
所以代码是这样的:
[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;