2

CAKeyframeAnimation を使用して、コップが空からいっぱいになるアニメーションを作成しました。アニメーションは完全に正常に機能します。

ガラスの充満に対応するパーセンテージで UILabel を更新する必要があります。つまり、アニメーションの開始時に「0%」、終了時に「100%」と表示されます。

キーフレーム アニメーションは 5 秒間実行されます。このラベルを更新する良い方法がわかりません。次の 2 つのオプションが考えられます。

  1. 別のスレッドを開始し、処理能力を犠牲にしてテキストを更新するポーリング タイプのループを実行します。
  2. アニメーションを 100 の部分に分割し、CABasicAnimation を使用してテキストを更新してから、ガラス アニメーションの次の部分に進みます。

これを行うより良い方法はありますか?

前もって感謝します

4

1 に答える 1

0

NSTImerまたはdispatch_after()ブロックのいずれかを使用して、スケジュールされた間隔でラベルを更新できます。

// assume an ivar "NSTimer *myTimer" and "int count", initially 0

// fires 20 times, so update is 0.05
myTimer = NSTimer scheduledTimerWithTimeInterval:0.25 target:self selector:@selector(updateLabel:) userInfo:nil repeats:YES

- (void)updateLabel:(NSTimer *)timer
{
  ++count;
  if(count >= 20) {
     [timer invalidate];
  }
  CGFloat percent += 0.05;
  myLabel.text = [NSString stringWithFormat:...
}
于 2012-08-15T12:12:02.993 に答える