0

UIImage *imageView がアニメーションの最後のフレームで終了する animationImages アニメーションがあります。

アニメーションの最後の画像が表示されたら、アニメーションを開始するボタン (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] を使用して、viewDidLoad で buttonTextColor の値を設定しました。

于 2013-09-18T00:04:37.800 に答える