UIBezierPath를 이용해서 다각형 또는 화살표 모양을 그린 후 Border 색을 그라데이션으로 적용
그라데이션 Border가 적용된 다각형 모양의 백그라운드에 단일 백그라운드 컬러 적용
//==========================================
// GradientLayer 설정
let gradientLayer = CAGradientLayer()
gradientLayer.frame = layerView.bounds
gradientLayer.colors = [UIColor.blue.cgColor, UIColor.green.cgColor]
gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.0)
gradientLayer.endPoint = CGPoint(x: 1.0, y: 0.0)
gradientLayer.cornerRadius = 5.0
//==========================================
// 테두리 Gradient 모양 설정
let freeformPath = UIBezierPath()
freeformPath.move(to: .zero)
freeformPath.addLine(to: CGPoint(x: 50, y: 50))
freeformPath.addLine(to: CGPoint(x: 50, y: 150))
freeformPath.addLine(to: CGPoint(x: 150, y: 50))
freeformPath.addLine(to: .zero)
freeformPath.fill()
let borderLayer = CAShapeLayer()
// CAShapeLayer에 UIBezierPath 적용
borderLayer.path = freeformPath.cgPath
borderLayer.fillColor = UIColor.clear.cgColor
borderLayer.strokeColor = UIColor.black.cgColor
borderLayer.lineWidth = 4.0
// GradientLayer에 마스크 설정
gradientLayer.mask = borderLayer
//==========================================
// 단일 배경색상 추가
let backLayer = CAShapeLayer()
backLayer.path = freeformPath.cgPath
backLayer.fillColor = UIColor.red.cgColor
backLayer.strokeColor = UIColor.clear.cgColor
layerView.layer.insertSublayer(backLayer, at: 0)
layerView.layer.insertSublayer(gradientLayer, at: 1)
'Swift > UIColor 및 CALayer' 카테고리의 다른 글
[SWIFT]HexString to UIColor (0) | 2021.11.15 |
---|