1

现在我在 iPhone 应用程序中工作,使用 UIImageView 创建动画并且它工作正常,然后我尝试调用一种方法,当动画一旦完成,然后按钮显示在屏幕上,但该按钮首先显示然后动画开始,我想一旦动画完成然后按钮显示在屏幕上,如何解决这个问题?请帮我

提前致谢

我试过这个供你参考:

 - (void)viewDidLoad
    {
        [super viewDidLoad];


        NSArray * imageArray  = [[NSArray alloc] initWithObjects:[UIImage imageNamed:@"cardopen.png"], 
                                         [UIImage imageNamed:@"middlecard.png"],
                                         [UIImage imageNamed:@"thirdcard.png"], 
                                         [UIImage imageNamed:@"a.png"],

                                         [UIImage imageNamed:@"cardopen1.png"],
                                         [UIImage imageNamed:@"middlecard2.png"],
                                         [UIImage imageNamed:@"thirdcard1.png"], 
                                         [UIImage imageNamed:@"2.png"],

                                         nil];

         UIImageView * cardsImage = [[UIImageView alloc] initWithFrame:CGRectMake(10, 0, 400, 300)];
            cardsImage.animationImages = imageArray;
            cardsImage.animationDuration = 8.0;
            cardsImage.animationRepeatCount=1; // one time looping only
            [self.view addSubview:cardsImage];
            [cardsImage startAnimating];  

             [self method1]; // To Call a method1 to show UIButton (Once the animation is completed, then to call a method1)

    }

    -(void)method1
    {
        UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        btn.frame=CGRectMake(10, 40, 50, 50);
        [self.view addSubview:btn];
    }
4

3 回答 3

2

(为什么没有人理解异步方法的概念?这很难吗?)

[cardsImage startAnimating];

立即返回,而不是在动画完成后返回。您必须设置显式超时:

NSTimer *tm = [NSTimer scheduledTimerWithTimeInteral:imageView.animationDuration * imageView.animationCount // assuming animationCount is not 0
    target:self
    selector:@selector(method1)
    repeats:NO
    userInfo:nil];
于 2012-09-20T07:41:13.653 回答
1

采用
[self performSelector:@selector(method1) withObject:nil afterDelay:8.0];

代替[self method1];

于 2012-09-20T07:45:07.367 回答
0

这是因为您将所有代码放入ViewDidLoad. 将处理整个方法。另外,您将动画持续时间设置为 0.8,这是一个缓慢的动画。因此,按钮会正常显示,并且动画会随之继续,甚至更多。所以你实际上需要做的是使用NSTimer或使用这里提供给你的答案:)

于 2012-09-20T07:42:46.520 回答