Ios CALayer上的边框不正确

Ios CALayer上的边框不正确,ios,objective-c,xcode,border,calayer,Ios,Objective C,Xcode,Border,Calayer,我有一个CALayer,它是一个圆形图像,我正在尝试为它添加一个外部边框。(阴影在这里对我不起作用)。我曾尝试调整CALAyer的大小并添加边框,但定位似乎不正确,我不希望形状移动,只希望添加边框 这是我的密码 CGFloat borderWidth = 10.0f; CGFloat xPos = cont.layer.frame.origin.x; CGFloat yPos = cont.layer.frame.origin.y; CGFloat contWidth

我有一个CALayer,它是一个圆形图像,我正在尝试为它添加一个外部边框。(阴影在这里对我不起作用)。我曾尝试调整CALAyer的大小并添加边框,但定位似乎不正确,我不希望形状移动,只希望添加边框

这是我的密码

CGFloat borderWidth = 10.0f;

    CGFloat xPos = cont.layer.frame.origin.x;
    CGFloat yPos = cont.layer.frame.origin.y;
    CGFloat contWidth = cont.layer.frame.size.width;
    CGFloat contHeight = cont.layer.frame.size.width;

    cont.layer.frame = CGRectMake(xPos, yPos, contWidth + borderWidth, contHeight + borderWidth);
    cont.layer.cornerRadius = contWidth / 2;
    cont.layer.borderColor = [[UIColor darkGrayColor] CGColor];
    cont.layer.borderWidth = borderWidth;
提前感谢

您的代码是正确的。 请添加一行:

cont.clipstobunds=是

self.imgView1.layer.cornerRadius=self.imgView1.frame.size.width/2

self.imgView1.layer.borderColor=[[UIColor blueColor]CGColor]

self.imgView1.layer.borderWidth=0.0f

self.imgView1.layer.masksToBounds=TRUE

在此之后,请执行以下步骤:

  • 创建另一个UIImageView并将其放置在第一个imageView的上方

  • 然后将secondImageView的高度和宽度增加到20

  • 将Second ImageView center和First ImageCenter设置为相等(在同一点)

  • 并编写以下代码:

    self.imgView2.layer.cornerRadius=self.imgView2.frame.size.width/2

    self.imgView2.layer.borderColor=[[UIColor blueColor]CGColor]

    self.imgView2.layer.borderWidth=10.0f

    self.imgView2.layer.masksToBounds=TRUE

    请执行以上步骤,它将解决您的问题

    现在您将获得如下输出:


    无法100%确定您在这里所做的事情,但是您似乎只在这一行中解释了一次边界宽度。。cont.layer.frame=CGRectMake(xPos、yPos、contWidth+borderWidth、contHeight+borderWidth);也许你的意思是contWidth+borderWidth*2或者类似的东西,这取决于你想用哪种方式回答。检查一下。只要在你的代码下面加上那一行。我原来的图层移动了位置,我希望它保持在原来的位置,边框出现在外面?你的答案在哪里?那为什么要弄乱框架呢?为什么不只是简单地设置图层的边框宽度、颜色和半径呢?clipsToBounds不适用于CALayer,masksTobounds适用,但不是我想要的。我的原始图层移动了位置,我希望它保持在原来的位置,边框显示在外面?我已经使用clipToBounds完成了等待我将共享屏幕快照我已经将边框颜色设置为蓝色。您需要此输出或其他任何内容。clipToBounds是UIImageView属性。@geoBApp共享屏幕快照这是我试图实现的,但是边框覆盖了部分图像,我希望它显示在CALayer(图像)的外部,这样我就不会丢失任何图像