0

很多人都问过这个问题,但我还没有真正找到答案。

我有一些课程在许多其他带有动画的方法中

someClass.m
@implementation

////..

-(void) someAnimationWithSomeObject (someParameters...blablabla

    [UIView animateWithDuration:0.2f
                          delay:delay
                        options:UIViewAnimationOptionCurveEaseOut
                     animations:^
     {
         self.center = point;
         self.transform = CGAffineTransformMakeRotation(_angle);
     }
                     completion:nil)];

在视图控制器中

-(void) someMethod1 {
/.....


for (int i=0; i < count; i++) {

/...some operation with coordinates

        [self.cardContainer addSubview:someView];

        [someView someAnimationWithSomeObject:someParameters withDelay:delay];
        delay += 0.2f; 
/... }

[self someMethod2];

}

-(void) someMethod2 {
/.....


for (int i=0; i < count; i++) {

/...some operation with coordinates

        [self.cardContainer addSubview:someView];

        [someView someAnimationWithSomeObject:someParameters withDelay:delay];
        delay += 0.2f; 
/... }

}

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self someMethod1];

}

当我使用这段代码时动画是非常不可预测的,因为当调用someMethod2坐标计算时动画是最快的。

如何使动画在第一种方法中播放,然后在第二种方法中播放等等。

[解决了]

在 someMethod1 添加之后

 [self performSelector:@selector(someMethod2) withObject:nil afterDelay:delay];

并且需要延迟修正 + 或 -

做得很好!

4

1 回答 1

0

考虑在第一个的完成块中启动第二个方法。也就是说,“做这个动画;然后,当它完成时,调用someMethod2并开始下一个动画。

于 2013-02-16T04:18:49.020 回答