UIImageView的双色边框

时间:2015-01-04 00:24:37

标签: ios objective-c 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,把它放在"真实"图像和设置边框。这种方式可行,但我需要一个更清洁的解决方案。

1 个答案:

答案 0 :(得分:3)

为此,您可以在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作为现有图层的子图层来执行此操作。