这个问题被很多人问到,但我还没有找到答案。
我有一些类,其中包含许多其他带动画的方法
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)];
ViewController中的
-(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];
需要一些延迟+或 -
的修正做得好!
答案 0 :(得分:0)
考虑在第一个方法的完成块中启动第二个方法。也就是说,&#34;做这个动画;然后,当它完成后,调用someMethod2
并开始下一个动画。