1

UIViewController のビューのサブビューとしてアニメーション化するため、時間の経過とともにその位置が変化する UIView サブクラス オブジェクトがあります。実際、私の移動する UIView サブクラスは単なるボールのイメージであり、デバイスの画面上部の境界線からぶら下がっているかのように移動しています。しかし、本当の振り子にするために、ボールと画面の上からぶら下がっている CGPoint の間に線を引きたいと思います。

私の考えは、UIView の位置が変わるたびに線を引くことでした。しかし、移動は iOS API 内で行われるため (私は のようなものを呼び出しているだけです[myBallView swing])、移動が発生しているのと同じ場所でこれを行うことはできません。私は実際に自分でビューをアニメーション化していません。

drawRect私の問題を解決するために私が考えている唯一の解決策はかなり悪いです: UIView をサブクラス化し、移動する UIView にスーパービューとして追加し、呼び出されるたびに行を追加します。しかし、drawRectそこに呼ばれるかどうかさえわかりません。いずれにせよ、これにはより良い解決策が必要です。

私の問題に対する良い解決策を知っている人はいますか?

4

1 に答える 1

0

スーパービューとして UIView のカスタム サブクラスを作成することは合理的です。

ただし、自分で線を引くのではなく、カスタム ビューに +layerClass を実装し、バッキング レイヤーを CAShapeLayer にすることをお勧めします。

次に、線であるビューの形状レイヤーに CGPath を作成し、他のビューの中心が移動したときに線の始点と終点を操作できます。シェイプ レイヤーは、画面更新プロセスの一部として描画するように設計されており、CABasicAnimation を使用してパスのエンドポイントを変更することで、変更をアニメーション化することもできます。

于 2013-09-07T19:29:08.993 に答える