は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のあなたの必要性に従って他の値を調整してください!
これは、より良いアプローチであり、uiviewではなくlayerを使用します。 More:https://www.raywenderlich.com/2502/calayers-tutorial-for-ios-introduction-to-calayers-tutorial – Rishabh
@Varun Naharia「myButton」とは何ですか?もっと説明できますか? – Amit
変更された回答はあなたのroundedImageですのでご確認ください –