2

我使用 CAKeyframeAnimation 制作了一个水杯从空到满的动画。动画效果很好。

我需要用与玻璃的饱满度相对应的百分比来更新 UILabel,即动画开始时它会显示“0%”,结束时会显示“100%”。

关键帧动画运行 5 秒。我看不到更新此标签的好方法。我可以想到两个选择:

  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 回答