2016-06-07 8 views
2

thisthis을 시도했지만 성공하지 못했습니다. 기본적으로 나는 이와 같은 것을 만들고 싶습니다 (내부 원). 서클은 데이터에 따라 생성됩니다. 데이터가 50이면 우리는 반원을 얻을 것이고, 100이면 완전한 원을 얻을 것입니다.UIBezierPath를 사용하여 만든 CAShapeLayer에 그라디언트 색상을 추가하는 방법

enter image description here

그리고 이것은 내가 지금까지, 그래서 무엇을 내가 인터페이스 빌더를 사용하여보기를 생성하고,이를 사용하여이 원을 그린

enter image description here

위의 디자인을 만들 수있는 방법 코드

override func viewDidLoad() { 


    let circlePath = UIBezierPath(arcCenter: CGPoint(x: myView.layer.frame.height/2,y: myView.layer.frame.height/2), radius: CGFloat(100), startAngle: CGFloat(0), endAngle:CGFloat(M_PI * 2), clockwise: true) 

    let shapeLayer = CAShapeLayer() 
    shapeLayer.path = circlePath.CGPath 
    shapeLayer.fillColor = UIColor.clearColor().CGColor 
    shapeLayer.strokeColor = UIColor.grayColor().CGColor 
    shapeLayer.lineWidth = 3.0 

    let colorCirclePath = UIBezierPath(arcCenter: CGPoint(x: myView.layer.frame.height/2,y: myView.layer.frame.height/2), radius: CGFloat(100), startAngle: CGFloat(0), endAngle:CGFloat(M_PI * 2), clockwise: true) 

    let coloredShapeLayer = CAShapeLayer() 
    coloredShapeLayer.path = colorCirclePath.CGPath 
    coloredShapeLayer.fillColor = UIColor.clearColor().CGColor 
    coloredShapeLayer.strokeColor = UIColor.whiteColor().CGColor 
    coloredShapeLayer.lineWidth = 10.0 
    self.myView.layer.addSublayer(coloredShapeLayer) 

    self.myView.layer.addSublayer(shapeLayer) 



} 

그라데이션을 만드는 방법입니다.

let gradient: CAGradientLayer = CAGradientLayer() 
    let startingColorOfGradient = UIColor(colorLiteralRed: 50/255, green: 189/255, blue: 170/255, alpha: 1.0).CGColor 
    let endingColorOFGradient = UIColor(colorLiteralRed: 133/255, green: 210/255, blue: 230/255, alpha: 1.0).CGColor 
    gradient.startPoint = CGPoint(x: 1.0, y: 0.5) 
    gradient.endPoint = CGPoint(x: 0.0, y: 0.5) 
    gradient.colors = [startingColorOfGradient , endingColorOFGradient] 
    self.myView.layer.insertSublayer(gradient, atIndex:0) 
+1

문제는 무엇인가요? 해결 했니? –

답변

0

하면 확인할 수있는 그라데이션 색의 실시간 시뮬레이션을 원한다면 this SO answer .IT의 4 개 부분에서 직사각형 뷰 분할 교차에 기초하여, 다음에인가되는 일정한 기울기를 얻기 위해 각 부분의 색을 교대 레이어 마스크.