2017-09-28 1 views
1

나는 bezierPath를 UIView에서 신속하게 그릴 때. 나는 그것과 함께 직선을 얻는다. 곡선 만 있으면 직선을 제거 할 수 있습니다.bezierPath UIView에서 신속한 3, 곡선 만 필요합니다

I에 의해 회색으로 칠을 제거 할 수 있습니다 line.fillColor = UIColor.clear.cgColor

하지 내가 직선을 제거 할 수있는 방법을 잘

enter image description here

코드 :

let line = CAShapeLayer() 
    let linePath = UIBezierPath() 
    linePath.move(to: start) 
    linePath.addLine(to: end) 
    var dis = (end.x - start.x)/3.0 
    linePath.addCurve(to: start, 
        controlPoint1: CGPoint(x: start.x + dis, y: start.y + dis), 
        controlPoint2: CGPoint(x: end.x - dis, y: end.y - dis)) 

    line.path = linePath.cgPath 
    line.strokeColor = UIColor.red.cgColor 
    //line.fillColor = UIColor.clear.cgColor 
    line.lineWidth = 4.0 
    line.opacity = 0.6 
    self.view.layer.addSublayer(line) 

답변

1

경로를 닫지 마십시오. 베 지어 패스를 닫으면 패스의 시작과 끝 사이에 직선이 추가됩니다. 경로를 닫지 않으면 그렇게하지 않아야합니다. (그러나 닫히지 않은 패스를 채울 수는 없습니다.)

그래도 도움이되지 않는다면 경로를 만들고 그려주는 코드를 보여 주도록 질문을 편집해야합니다.

+0

안녕 @Duncan, 내가 업데이트 한 코드를 UIView의에 추가하십시오. close를 제거한 후에도 여전히 직선을 그립니다. – user320478

+0

코드에는 시작점에서 끝점까지 선을 그리는 명시적인 명령이 있습니다 :'linePath.addLine (to : end)'그리고 처음부터 끝까지. 'addLine' 명령을 제거하고, 끝점으로 먼저 이동 한 다음, 끝점에서 시작점까지 커브를 추가하거나 (커브의 시작 부분으로 이동 한 다음 'linePath.addCurve'를 다시 작성하십시오. 시작 지점에서 끝 지점까지 곡선을 추가하십시오.) –

+0

완벽하게 작동했습니다! – user320478

0

아래 코드를 사용해보십시오. 시작점과 끝점을 지정하고 삼각형 함수의 pi를 사용하여 원 곡선을 표현합니다. 당신이이를 사용하여 애니메이션을 사용하려면, 다음 코드

enter image description here 수입 UIKit

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 



     let pi = CGFloat(Float.pi) 
     let start:CGFloat = 0.0 
     let end :CGFloat = pi 

     // circlecurve 
     let path: UIBezierPath = UIBezierPath(); 
     path.addArc(
      withCenter: CGPoint(x:self.view.frame.width/4, y:self.view.frame.height/4), 
      radius: 300, 
      startAngle: start, 
      endAngle: end, 
      clockwise: true 
     ) 
     let layer = CAShapeLayer() 
     layer.fillColor = UIColor.clear.cgColor 
     layer.strokeColor = UIColor.orange.cgColor 
     layer.path = path.cgPath 
     self.view.layer.addSublayer(layer) 


    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


}