ios - 如何将UILabel文本中的更改与相关动画同步?

标签 ios core-animation synchronous cakeyframeanimation

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

我需要用对应于玻璃填充度的百分比来更新UILabel,即动画开始时它将显示为“0%”,结束时为“100%”。

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

  • 启动另一个线程并运行轮询类型的循环,该循环以处理能力为代价更新文本。
  • 将动画分为100个部分,并使用CABasicAnimation更新文本,然后继续进行下一个玻璃动画。

  • 有一个更好的方法吗?

    提前致谢

    最佳答案

    您可以使用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:...
    }
    

    关于ios - 如何将UILabel文本中的更改与相关动画同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11967266/

    相关文章:

    iphone - 像核心动画老虎机一样在 z 轴上旋转

    Qt同步QNetworkAccessManager获取

    ios - 跨 Storyboard播放背景音乐。

    ios - 使用 Quartz (iOS) 进行形状变换

    ios - 如何使用 NSPredicate 和 CloudKit 获取特定用户的最新帖子?

    node.js - 如何使用 URI 和服务器连接到 MongoDB 服务器

    javascript - 是否可以在 javascript 中并排运行多个函数,即使它们不是同时触发的?

    ios - 'didSelectRowAt' 未被调用

    ios - (iOS) 如何使用 shapeLayer 为圆角矩形制作动画?

    ios - UIView 在 iOS 中为 2D 弹跳球( Squash 和拉伸(stretch))设置动画