很多人都问过这个问题,但我还没有真正找到答案。
我有一些课程在许多其他带有动画的方法中
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];
并且需要延迟修正 + 或 -
做得很好!