如何在 UIImageview 中绘制椭圆形
Posted
技术标签:
【中文标题】如何在 UIImageview 中绘制椭圆形【英文标题】:how to draw oval shape in UIImageview 【发布时间】:2014-05-21 09:25:15 【问题描述】:我想画一个椭圆形的UIImageView
。我试着画画,但我找不到答案。我展示了大部分圆形或圆形。
enter link description here
我试试这个,但这是行不通的
#import <QuartzCore/QuartzCore.h>`
CALayer *imageLayer = YourImageview.layer;
[imageLayer setCornerRadius:5];
[imageLayer setBorderWidth:1];
[imageLayer setMasksToBounds:YES];
【问题讨论】:
【参考方案1】:如果你想画一个椭圆形的图像视图,请按照以下步骤操作:
使用 bezierPathWithOvalInRect
创建 UIBezierPathUIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:YOUR_RECT];
使用 CAShapeLayer 创建遮罩层
CAShapeLayer *maskLayer = [CAShapeLayer layer];
现在将贝塞尔路径设置为遮罩层的路径
maskLayer.path = path.CGPath;
然后我们要用我们自己的遮罩层来遮罩我们的视图。
YourImageview.layer.mask = maskLayer;
就是这样。试试看。
【讨论】:
感谢您的帖子,我只是对变量 YOUR_RECT 感到困惑感谢@Ilesh【参考方案2】:是的,您可以通过绘制 BezierPath 来完成,但即使我们无法获得精确的圆形矩形图像... 所以我会给你其他的伎俩... 你使用 2 imageview 一个用于传递图像的主图像视图.. second(overhead imageviw) 用于圆形或圆形图像,橙色边框在中间/中心透明。
当您在主图像视图上使用overheadimageview 时,您可以找到精确的圆形或圆形图像
【讨论】:
【参考方案3】:您需要将角半径设置为图像大小的一半,才能绘制圆形。 但是要绘制椭圆形,您需要更小的半径。
CGFloat imgSize = 55;
UIImageView *imgViewProfile = [[UIImageView alloc] init];
imgViewProfile.frame = CGRectMake(5, 5, imgSize, imgSize);
imgViewProfile.layer.cornerRadius = imgSize / 2;
imgViewProfile.clipsToBounds = YES;
imgViewProfile.contentMode = UIViewContentModeScaleAspectFill;
[view addSubview:imgViewProfile];
【讨论】:
它不能正常工作,形状是圆形而不是像上图那样的椭圆形。以上是关于如何在 UIImageview 中绘制椭圆形的主要内容,如果未能解决你的问题,请参考以下文章
如何让 UIImageView 尊重它的 superview.layer.mask
如何在 Swift 5 中创建一个继承自另一个类的 UIImageView 类