我使用 CAKeyframeAnimation 制作了一个水杯从空到满的动画。动画效果很好。
我需要用与玻璃的饱满度相对应的百分比来更新 UILabel,即动画开始时它会显示“0%”,结束时会显示“100%”。
关键帧动画运行 5 秒。我看不到更新此标签的好方法。我可以想到两个选择:
- 启动另一个线程并运行轮询类型的循环,以处理能力为代价更新文本。
- 将动画分解为 100 个部分并使用 CABasicAnimation 更新文本,然后继续下一段玻璃动画。
有一个更好的方法吗?
提前致谢
我使用 CAKeyframeAnimation 制作了一个水杯从空到满的动画。动画效果很好。
我需要用与玻璃的饱满度相对应的百分比来更新 UILabel,即动画开始时它会显示“0%”,结束时会显示“100%”。
关键帧动画运行 5 秒。我看不到更新此标签的好方法。我可以想到两个选择:
有一个更好的方法吗?
提前致谢
您可以使用 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:...
}