我有一个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];}
到目前为止,该按钮仍处于禁用状态。有什么想法吗?
答案 0 :(得分: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]在viewDidLoad中设置了buttonTextColor的值。
答案 1 :(得分: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];
}];
}