Я хочу анимировать через массив CATextLayers, один за другим. Слои создаются и добавляются в цикле. Мне нужно чтобы анимация работала как флипбук. До сих пор, в качестве подтверждения концепции, я использовал CABasicAnimations, но для того, чтобы анимировать несколько слоев последовательно, я думаю, что мне нужен один из других опций Core Animation, но я не уверен, какой именно. Вот цикл добавления подслоев:
- (void) initLayers: (NSString *)endChar
{
CALayer *rootLayer = self.layer;
int counter =0;
for (NSString *element in alphabet) {
NSLog(@"element: %@",element);
NSString *topLayerName = [NSString stringWithFormat:@"TOP_%d_%@",counter,element];
NSString *bottomLayerName = [NSString stringWithFormat:@"BOT_%d_%@",counter,element];
//get index of endchar - indexOfObject
if (element != endChar) { //change to if key value is less than or equal to endchar index value
CATextLayer *topLayer = [CATextLayer layer];
topLayer.name = topLayerName;
[topLayer setAnchorPoint:CGPointMake(0.5f,1.0f)]; // set the anchorpoint for the transform. This affects layer position too
topLayer.bounds = CGRectMake(0.0f, 0.0f, CHARACTER_WIDTH, CHARACTER_HEIGHT/2);
topLayer.string = element;
topLayer.font = solariFont.fontName;
topLayer.fontSize = FONT_SIZE;
topLayer.backgroundColor = [UIColor blackColor].CGColor;
topLayer.position = CGPointMake(30,30);
topLayer.wrapped = NO;
[rootLayer addSublayer:topLayer];
CATextLayer *bottomLayer = [CATextLayer layer];
bottomLayer.name =bottomLayerName;
[bottomLayer setAnchorPoint:CGPointMake(0.5f,0.0f)]; // set the anchorpoint for the transform. This affects layer position too
bottomLayer.bounds = CGRectMake(0.0f,CHARACTER_HEIGHT/4, CHARACTER_WIDTH, CHARACTER_HEIGHT/2);
bottomLayer.string = element;
bottomLayer.font = solariFont.fontName;
bottomLayer.fontSize = FONT_SIZE;
bottomLayer.backgroundColor = [UIColor blackColor].CGColor;
bottomLayer.position = CGPointMake(topLayer.position.x,topLayer.position.y+2);
bottomLayer.wrapped = NO;
[rootLayer addSublayer:bottomLayer];
counter++;
}
}
[self animChars:rootLayer.sublayers];
}
Вопрос в том, как я могу анимировать слои один за другим без анимации для каждого слоя, происходящего одновременно? Я хочу иметь возможность проходить через массив подслоев и анимировать каждый CATextLayer по порядку. Нужны ли мне CATransaction, MediaTiming? Я прошел через руководство по основной анимации, но не мудрее.