1

CALayer アニメーションを使用して同じように動作するかどうかはわかりません。そうだと思います。

この写真を見てください:私が欲しいのは、水平方向に成長する水平バーをアニメーション化することです。私がしていることは:

UIViewBar と呼ばれる UIView をサブクラス化し、その drawRect:rect メソッドで、四角形と右キャップの形状を描画します。

CGContextMoveToPoint A
CGcontextAddLineToPoint B
CGContextAddArcToPoint D
CGContextAddLineToPoint C
//then close the path and fill the context

次に、UIViewController でこの UIViewBar (initWithFrame:rect) を呼び出します。形状は私が望むものであり、見栄えがします。しかし、[UIView アニメーション] を実行すると、元のrectからrectGrewに変換するとうまくいきません。代わりに、写真のように機能します。

よく考えてみると、UIView が水平方向に伸びると、上限が変更されないことがわからないため、まったく不合理ではありません。これを行う別の方法はありますか?

ここに画像の説明を入力

実は、私はドローイング、グラフィック、アニメーションについてはまったくの初心者です。私が知っていることは次のとおりです(間違っている場合は親切に修正してください):

  1. 「何かを描画」したい場合は、UIView の drawRect メソッドをオーバーライドする必要があります。これは、UIView を初期化することによって行われます。外部で呼び出されないようにする必要があります。CGContextFillRect によって UIView に四角形を描いたとします.....
  2. しかし、この四角形をアニメーション化するにはどうすればよいでしょうか。私はQuartz2Dベースのアニメーションは作れませんが、UIViewアニメーションやCALayer(deeper tech)から作れますので、四角形自体を別のUIViewRectとして別途作る必要があるので、[UIViewRect animation]メソッドを呼び出します。右にこれ
  3. その場合、アニメーション化するすべての長方形をそれぞれ UIView にする必要があります。パフォーマンスに影響はありませんか?それとも、アップルが好む方法ですか?

どんな提案も大いに役立ちます、ありがとう。

4

1 に答える 1

0

うわー、まったく回答が投稿されていないのは初めてです!私の質問に答えるには、CALayer のアニメーション カスタム プロパティを考慮する必要があります。カスタム プロパティは AB の幅です (キャップの幅を除いた幅で、動作するはずです)。誰かが詳細なコードが必要な場合。CALayer でカスタム プロパティ animate をググってください。

于 2013-05-30T00:54:08.430 に答える