5

正如标题所说,这很奇怪,你同意吗?

所以,如果有人找到了你的代码

imageView.backgroundColor = [UIColor greenColor]; 

或者

imageView.image = [UIImage imageName:@"angryBird"];" 

不工作。请注意,如果您的 imageView 正在制作动画,或者动画是否已被删除。

----------下面的答案---------------</p>

在设置图像并更改动画 UIImageView 的背景之前停止动画。

UIImageView* imageView = [UIImageView alloc] init];
//......do sth. like setFrame ...
imageView.images = [NSArray arrayWithObjects....]; // set the animation images array 
imageView.animationDuration = 1.0;
[imageView startAnimating];
//......do sth.
[imageView stopAnimating];        // **** do not forget this!!!!! ****
imageView.backgroundColor = [UIColor greenColor];
imageView.image = [UIImage imageName:@"angryBird"];

当你执行Selector: withObject: afterDey:1.0s 时,在selector 方法中,你也需要stopAnimating,然后setImage 或者改变背景颜色。

4

4 回答 4

5

动画完成后尝试更改背景颜色并更改图像。它只会为您工作。

于 2013-05-31T12:19:31.470 回答
1

尝试这个:

[UIView animateWithDuration:1.0 animations:^(){} completion:^(BOOL finished){}];
于 2013-05-31T12:16:47.090 回答
0

试试这个,动画使用块

[UIView animateWithDuration:1.0 animations:^{
    }
    completion:^(BOOL finished)
    {
        [imageView setImage:[UIImage imageNamed:@"YOUR_IMAGE_NAME"]];
        [imageView setBackgroundColor:[UIColor greenColor]];


    }];

注意:imageNamed:不是imageName:,我不确定它是如何编译的

于 2013-05-31T12:44:53.293 回答
0

试试这段代码并以这种方式执行Selector:withObject:afterDelay::

    [self performSelector:@selector(animationDidFinish:) withObject:nil
         afterDelay:instructions.animationDuration];

或使用 dispatch_after:

    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, instructions.animationDuration * NSEC_PER_SEC);
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
         [self animationDidFinish];
    });

我希望它可以帮助你

于 2013-05-31T12:09:43.357 回答