0

UISliderを使用してUIBezierPathの描画を制御したいと思います。

目的は、タイムライン(UISlider)をスクラブし、スライダーの現在の位置に基づいて線(UIBezierPath)を描画できるようにすることです。

そのため、前方にスクラブするとパスが前方にレンダリングされ、後方にスクラブするとパスが後方にレンダリングされます。

リバースパスを追加したこのサンプルコードに基づいて、パスの描画を両方向にレンダリングするコードがあります(https://github.com/ole/Animated-Paths)

私が理解するのに苦労している主なことは、スライダーの動きで更新されないため、アニメーションを実際に使用できないため、スライダーを動かしたときにパスをレンダリングする方法です。

乾杯ダミアン

4

2 に答える 2

1

UISliderの「コントロールイベント」を追跡している場合、たとえば次のようになります。

[yourSlider addTarget:self action:@selector(seekBegan:) forControlEvents:UIControlEventTouchDown];
[yourSlider addTarget:self action:@selector(seekContinues:) forControlEvents:UIControlEventTouchDragInside];
[yourSlider addTarget:self action:@selector(seekEnded:) forControlEvents:UIControlEventTouchUpInside];

..その後、「seekContinues:」内でアニメーションを実行できます。どれだけスムーズになるかは言えません!そのメソッドへの呼び出しがたくさんあるかもしれないので。

于 2012-10-27T18:32:41.220 に答える
0

そのため、アニメーションを使用して目的を達成できないことがわかったため、カスタムUIViewサブクラスを使用し、そのdrawRectメソッドにアニメーションを処理するコードを実装しました。

基本的に、drawrectメソッドが描画するポイントの数を制御するインデックスをサブクラスに設定します。

これにより、希望するアプローチが得られ、スライダーに基づいて値を変更することができました。

描画では、CGContextMoveToPointとCGContextAddLineToPointを使用してパスをレンダリングしました

乾杯

于 2012-10-30T15:31:12.783 に答える