0

我有一个 animationImages 动画,其中我的 UIImage *imageView 在动画的最后一帧结束。

当显示动画的最后一个图像时,我想禁用启动动画的按钮(buttonOne),并在按下另一个按钮(buttonTwo)时重置动画。ButtonTwo 将动画的第一个图像显示出来,因此它不显示最后一个图像。所以基本上,我试图找出一种让用户重置动画的方法。

我的问题:如何在显示最后一张图像时禁用 buttonOne,并在显示第一张图像时再次启用 buttonOne?

这是我的第一次尝试:

- (IBAction)buttonOne:(UIButton *)sender {
if (self.imageView.image == [self.imageView.animationImages lastObject]) {[self.buttonOne     setEnabled:NO];}
else {[self.buttonOne setEnabled:YES];}

到目前为止,该按钮只是保持禁用状态。有任何想法吗?

4

2 回答 2

1

您不能将启用按钮的代码放入按钮的操作方法中,因为此时它将被禁用。我认为没有任何方法可以在动画完成时获得回调,但是由于您设置了动画持续时间,因此您可以在同一时间段后调用一种方法来禁用按钮。像这样的东西:

-(IBAction)animatePcs:(id)sender {
    self.iv.animationImages = self.pics;
    self.iv.animationDuration = 2.0;
    self.iv.animationRepeatCount = 1;
    [self.iv startAnimating];
    [self performSelector:@selector(disableButton) withObject:nil afterDelay:2.0];
}

-(void)disableButton {
    self.button1.enabled = NO;
    [self.button1 setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal];
}

-(IBAction)reenableButton1:(id)sender { // button 2 method
    self.button1.enabled = YES;
    [self.button1 setTitleColor:self.buttonTextColor forState:UIControlStateNormal];
}

我使用 [self.button1 titleColorForState:UIControlStateNormal] 在 vi​​ewDidLoad 中设置 buttonTextColor 的值。

于 2013-09-18T00:04:37.800 回答
0
- (void) startanimation {

  [buttonOne.userInteractionEnabled = NO];
    [UIView animateWithDuration:5. delay:0. options:UIViewAnimationOptionCurveEaseInOut animations:^{
        // do your animation here
    } completion:^(BOOL finished) {
         // When your animation finished, allow users to interact with the button
        [buttonOne.userInteractionEnabled = YES];
    }];

}
于 2013-09-17T23:22:26.303 回答