1
UIBezierPath를 사용하여 선을 그립니다. 스트레칭하고 싶지만 작동하지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까? 선의 시작점과 끝점을 어떻게 바꿀 수 있습니까?UIBezierPath를 사용하여 그린 선을 늘리는 방법은 무엇입니까?
let line = CAShapeLayer()
let linePath = UIBezierPath()
func DrawLine()
{
linePath.move(to: to: CGPoint(x: 100, y: 100)
linePath.addLine(to: CGPoint(x: self.view.frame.width - 100, y: 100))
line.path = linePath.cgPath
line.strokeColor = UIColor.red.cgColor
line.lineWidth = 1
line.lineJoin = kCALineJoinRound
self.view.layer.addSublayer(line)
}
override func viewDidLoad()
{
super.viewDidLoad()
DrawLine()
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)
{
line.frame.origin.x -=10
line.frame.size.width += 10
}
보기를 터치하면 touchesBegan 메소드가 트리거됩니다. 포인트 1과 포인트 2는 10pt만큼 수정되고 경로는 새로운 포인트로 재생성됩니다. 그러면 CAShapeLayer의 경로가 업데이트됩니다. –
속성 값을 변경하면 CALayers가 자동으로 업데이트됩니다. 이 경우 경로 속성이 변경됩니다. setNeedsDisplay는 필요하지 않으며 CALayer에 draw (rect :) 메소드가 없습니다. 그러나 레이어를 서브 클래스 화하면 draw (in :) 메서드를 재정의 할 수 있습니다. –