如何在 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

    创建 UIBezierPath
    UIBezierPath *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 中的空白?

如何让 UIImageView 尊重它的 superview.layer.mask

图像在圆形 UIImageView 中得到压缩

如何在 Swift 5 中创建一个继承自另一个类的 UIImageView 类

为啥在任何 UIimageView 和 Uiview 上都无法访问圆形滑块

如何在 iOS 中在没有 UIImageView 的情况下在视图上绘制/绘制 UIIMage