2017-10-03 12 views
1

は、私がこれまでのところ、私が使用していますImageview like-UIImageViewで多色の枠線を作成する方法は?

enter image description here

を達成したい:

roundedImage.layer.cornerRadius = roundedImage.frame.width/2 
     roundedImage.layer.masksToBounds = true 
     roundedImage.layer.borderWidth = 2.0 
     roundedImage.layer.borderColor = UIColor.red.cgColor 

しかし、それは

マルチ達成するためにどのように、私に

enter image description hereを与えています色の丸いボーダー?念頭に置いています

答えて

1

最も簡単な方法は、グラデーションで着色された丸い背景ビューを作成し、

1
let gradient = CAGradientLayer() 
    gradient.frame = CGRect(origin: CGPoint.zero, size: self.roundedImage.frame.size) 
    gradient.colors = [UIColor.blue.cgColor, UIColor.green.cgColor] 

    let shape = CAShapeLayer() 
    shape.lineWidth = 2 
    shape.path = UIBezierPath(rect: roundedImage.bounds).cgPath 
    shape.strokeColor = UIColor.black.cgColor 
    shape.fillColor = UIColor.clear.cgColor 
    gradient.mask = shape 

    roundedImage.layer.addSublayer(gradient) 
+0

これは、より良いアプローチであり、uiviewではなくlayerを使用します。 More:https://www.raywenderlich.com/2502/calayers-tutorial-for-ios-introduction-to-calayers-tutorial – Rishabh

+0

@Varun Naharia「myButton」とは何ですか?もっと説明できますか? – Amit

+0

変更された回答はあなたのroundedImageですのでご確認ください –

0

はCALayerのに拡張を作成してみてください1pxの白い枠で一番上にあなたのimageViewを入れています。

他の場所でも動作します。

赤とピンクの色を設定しました。

@implementation CALayer(Border) 

-(void) addGradientBorderColor { 
    CAGradientLayer *objgradientLayer = [[CAGradientLayer alloc] init]; 
    objgradientLayer.frame = CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height); 
    objgradientLayer.startPoint = CGPointMake(0.0, 0.5); 
    objgradientLayer.endPoint = CGPointMake(1.0, 0.5); 
    objgradientLayer.colors = @[(id)[UIColor redColor].CGColor, (id) 
    [UIColor colorWithRed:(255/255.0) green:(192/255.0) blue:(203/255.0) alpha:1].CGColor]; 

    CAShapeLayer *objShapeLayer =[[CAShapeLayer alloc] init]; 
    objShapeLayer.lineWidth = 0.5; 
    objShapeLayer.path = [UIBezierPath bezierPathWithRect:self.bounds].CGPath; 
    objShapeLayer.fillColor = nil; 
    objShapeLayer.strokeColor = [UIColor whiteColor].CGColor; 
    objgradientLayer.mask = objShapeLayer; 

    [self addSublayer : objgradientLayer]; 
} 

@end 

スウィフト:

extension CALayer { 
    func addGradienBorder(colors:[UIColor] = [UIColor.redColor().CGColor,UIColor(red: 255/255, green: 192/255, blue: 203/255, alpha: 1).CGColor],width:CGFloat = 1) { 
     let objgradientLayer = CAGradientLayer() 
     objgradientLayer = CGRect(origin: CGPointZero, size: self.bounds.size) 
     objgradientLayer = CGPointMake(0.0, 0.5) 
     objgradientLayer = CGPointMake(1.0, 0.5) 
     objgradientLayer = colors.map({$0.CGColor}) 

     let objShapeLayer = CAShapeLayer() 
     objShapeLayer.lineWidth = 1 
     objShapeLayer.path = UIBezierPath(rect: self.bounds).CGPath 
     objShapeLayer.fillColor = UIColor.clear.cgColor 
     objShapeLayer.strokeColor = UIColor.blackColor().CGColor 
     objgradientLayer.mask = objShapeLayer 

     self.addSublayer(objgradientLayer) 
    } 
} 

役に立てば幸い

Objective Cのあなたの必要性に従って他の値を調整してください!

関連する問題