仅在UIButton动画完成后更新标签?

时间:2011-04-17 00:09:40

标签: iphone objective-c animation uibutton

我在IBAction(按下按钮)方法中使用了代码:

    CABasicAnimation *rotateButton;  //don't forget to release
rotateButton = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
rotateButton.fromValue = [NSNumber numberWithFloat:0];
rotateButton.toValue = [NSNumber numberWithFloat:((720*M_PI)/180)];
rotateButton.duration = 0.75;
rotateButton.repeatCount = 1;
[sender addAnimation:rotateButton forKey:@"720"];

并且只有在完成后才能更新我想要的标签。我想知道是否有一个简单的例子,任何人都可以提供给我的标签只在完成时更新,而不是在方法完成时。我知道你不能使用“@selector(animationDidStop:finished:context :)”因为苹果不喜欢它。任何人的帮助?拜托,谢谢!

2 个答案:

答案 0 :(得分:1)

为什么不直接使用UIView动画块?

[UIView animateWithDuration:0.75 delay:0 options:0 animations:^{
    theButton.transform = CGAffineTransformMakeRotation((720*M_PI)/180);
} completion:^{
    theLabel.text = @"Whatever";
}];

如果您需要4.x之前的兼容性,请使用旧表单,使用UIView类方法+setAnimationDidStopSelector:,如下所示:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDidStopSelector:@selector(someMethodInWhichYouSetTheLabelText)];
    theButton.transform = CGAffineTransformMakeRotation((720*M_PI)/180);
[UIView commitAnimations];

答案 1 :(得分:0)

  

我知道你不能用   “@selector(animationDidStop:完成:上下文:)”

实际上你可以,只是给它一个名字,这样它就不会与Apple内部方法冲突

关于您的问题:

CAAnimation Class Reference

  

委托

     

指定接收者   委托对象。

     

animationDidStop:已完成:

     

什么时候打电话   动画完成其活动   持续时间或从对象中删除   它附在。