0
나는 시간 경과에 따라 움직이는 라인의 실시간 적용을 만들고 싶다. 따라서 베 지어 곡선에 값을 지속적으로 추가하고 싶습니다. 그것을 시험하기 위하여 :UIBezierPath에 동적으로 값 추가
import UIKit
class TestView: UIView {
var arr = [CGPointMake(0, 0), CGPointMake(120, 150), CGPointMake(260, 150), CGPointMake(210, 30)]
var control = CGPointMake(5, 5)
let path = UIBezierPath()
var count = 0
override func drawRect(rect: CGRect) {
path.lineWidth = 3.0
path.moveToPoint(CGPointMake(20, 40))
path.addQuadCurveToPoint(arr[1], controlPoint: control)
path.stroke()
var timer = NSTimer.scheduledTimerWithTimeInterval(2.0, target: self, selector: Selector("update"), userInfo: nil, repeats: true)
}
func update() {
var p = arr[count]
path.addQuadCurveToPoint(p, controlPoint: control)
path.stroke()
count++
}
}
나는 이것을 청소할 것이다, 그러나 이것은 작동하지 않는 것처럼 보인다. 초기 선을 그으나 다른 점은 추가되지 않습니다.
더 나은 방법이 있습니까?
감사합니다. 궁금합니다. 전체 곡선을 다시 그리거나 새로운 곡선 만 추가할까요? 왜냐하면 결국 커브가 움직이는 것처럼 보이기 때문에 애니메이션을 만들고 싶기 때문입니다. 따라서 전체 선을 다시 그리는 것이 가장 좋지는 않습니다. 그러나 나는 그 기회를 줄 것이다! – Jonovono
drawRect()에서 모든 것을 다시 그릴 수 있습니다 - 일반적으로 어떻게 작동하는지 알 수 있습니다. 그러나 점차적으로 타이머의 update() 호출을 통해 경로가 보이는 모양 (점을 추가 할 때)이 변경되어 애니메이션처럼 보입니다. 본질적으로, drawRect()가 시스템에 의해 호출 될 때마다 (setNeedsDisplay()에 대한 호출로 움직입니다), 약간 다른 경로를 그립니다. – davecom