У меня есть массив CAShapeLayer
. В какой-то момент я должен перебирать этот массив и запускать анимацию для каждого слоя. Эти анимации меняют bounds.size.height
слоев на разные значения (вычисленные каким-то образом). В методе animationDidStop
я бы хотел изменить высоту каждого слоя на значение animation.toValue
. Мне нужно сделать это, потому что я хочу, чтобы будущие анимации начинались с новых значений, а не из начальных значений. Это цикл:Как идентифицировать CAShapeLayer в анимацииDidStop
for (int i=0; i<[layersArray count]; i++) {
newLayerHeight = [self computeNewHeightForLayer:[layersArray objectAtIndex:i];
CABasicAnimation *myAnim = [CABasicAnimation animationWithKeyPath:@"bounds.size.height"];
myAnim.delegate = self;
myAnim.duration = 0.4;
myAnim.removedOnCompletion = NO;
myAnim.fillMode = kCAFillModeForwards;
myAnim.fromValue = [NSNumber numberWithFloat:[layersArray objectAtIndex:i]).bounds.size.height];
myAnim.toValue = [NSNumber numberWithFloat:newLayerHeight];
[[layersArray objectAtIndex:i] addAnimation:myAnim forKey:@"changeHeightAnim"];
}
В animationDidStop
метод, который я хотел бы сделать что-то вроде этого (что эквивалентно этому, на самом деле, а если-иначе парадигма не лучший):
-(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{
if(flag){
/*
if(anim is linked to layer0)change the height of layer0;
if(anim is linked to layer1)change the height of layer1;
.
.
.
if(anim is linked to layerN-1)change the height of layerN-1;
*/
}
}
Есть идеи? Спасибо.
Спасибо. Я принял немного другое решение, но ядро этого решения принадлежит вам. – superpuccio
Прохладный @superpuccio, удачи :) – YoCoh