UIImageView 的双色边框

Double colored border for UIImageView

我想设置一个周围有 2 个边框的图像。是否可以以某种方式在同一图像视图上复制 borderWidth 属性?像这样:

   // inner circle/border
   self.avatar.layer.borderWidth = 2.0f;
   // outer circle/border
   self.avatar.layer.borderWidth = 4.0f;

  UIColor *myColor = [UIColor colorWithRed:(24.0 / 255.0) green:(169.0 / 255.0) blue:(250.0 / 255.0) alpha: 1];
  UIColor *myColor2 = [UIColor colorWithRed:(24.0 / 255.0) green:(169.0 / 255.0) blue:(20.0 / 255.0) alpha: 1];
   self.avatar.layer.borderColor = myColor.CGColor;
   self.avatar.layer.borderColor = myColor2.CGColor;

不幸的是,这段代码不起作用,但如果有任何像这样简单的解决方案,我会非常高兴。实际上我唯一的想法是复制 UIImageView,将其放在 "real" 图像下方并为其设置边框。这种方法可行,但我需要一个更清洁的解决方案。

为此,您可以将 UIImageView 添加到 UIView 中并设置 UIView 的图层。

你可以这样做:

self.avatar.layer.borderWidth = 2.0f;
UIColor *myColor   = [UIColor colorWithRed:(24.0 / 255.0) green:(169.0 / 255.0) blue:(250.0 / 255.0) alpha: 1];
UIColor *myColor2  = [UIColor colorWithRed:(24.0 / 255.0) green:(169.0 / 255.0) blue:(20.0 / 255.0) alpha: 1];
CGPoint point      = self.avatar.frame.origin;
CGFloat width      = self.avatar.frame.size.width;
CGFloat height     = self.avatar.frame.size.height;
UIView *holderView = [[UIView alloc] initWithFrame:CGRectMake(point.x, point.y, width+4, height+4)];

holderView.layer.borderWidth  = 2.0;
self.avatar.layer.borderColor = myColor.CGColor;
holderView.layer.borderColor  = myColor2.CGColor;
[self.avatar setFrame:CGRectMake(2, 2, width, height)];
[holderView addSubview:self.avatar];
[self.view addSubview:holderView];

或者您可以添加一个新的 CALayer 作为现有图层的子图层来执行此操作。