0

我的代码中有一个UIButton在屏幕上稳定移动的代码。目前,当用户按下按钮时,alpha 变为 0 并消失。我想做的是在按下按钮/它消失后运行一个单独的动画。似乎很容易,但问题是我需要在按下按钮时在按钮的确切位置运行动画。我对如何实现这一点持空白。任何帮助都感激不尽!我将在下面发布一些相关代码。

-(void)movingbuttons{
    movingButton2.center = CGPointMake(x, y);
    displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(moveObject)];
    [displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
}

-(void)moveObject{
    movingButton2.center = CGPointMake(movingButton2.center.x , movingButton2.center.y +1);
}


-(IBAction)button2:(id)sender {
    [UIView beginAnimations:nil context:NULL];
    [movingButton2 setAlpha:0];
    [UIView commitAnimations];

}
4

2 回答 2

1

用下面的代码替换你的button2动作,并用你想要的动画实现someOtherMethodWithAnimation方法:)

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];
 movingButton2.alpha = 0;
[UIView commitAnimations];
[self performSelector:@selector(someOtherMethodWithAnimation) withObject:nil afterDelay:1.0];
于 2013-02-18T17:26:27.383 回答
0

将您的动画替换为:

[UIView animateWithDuration:0.25
             animations:^{
                 self.movingbutton2.alpha = 0.0;
                             // modify other animatable view properties here, ex:
                             self.someOtherView.alpha = 1.0;
             }
             completion:nil];

只是一个挑剔的点,但是您的视图控制器的 .xib 文件中的按钮是否正确连接到您的 IBOutlets 和 IBActions?

更新

您不仅限于修改方法中的那个按钮。您可以在动画块中添加您想要的任何代码(参见上面的更新示例)。

UIView动画属性,那里有一个动画部分。

另一种方法可能是(我只是alpha作为一个例子):

[UIView animateWithDuration:1.0
                 animations:^{
                     self.movingButton2.alpha = 0.0;
                 }
                 completion:^{
                     [UIView animatateWithDuration:0.25
                                        animations:^{
                                            self.someOtherView.alpha = 1.0;
                                        }
                                       completion:nil];
  }];

这更有可能保证动画会一个接一个地发生。

于 2013-02-18T17:02:04.343 回答