Я создал набор классной анимации, используя ярлыки на моем первом представлении.Повторное использование блоков массива анимации по точкам зрения?
Я не хочу переписывать этот код, так как я могу улучшить эту анимацию в будущем.
Однако я хочу использовать эту точную анимацию с разными метками на другом контроллере view/view. Они будут иметь одно и то же имя.
Как я могу это сделать, может ли кто-нибудь предложить/предоставить пример?
Это анимация блок массива код, который я на основе моего кода на ...
http://xibxor.com/2013/03/27/uiview-animation-without-nested-hell/
NSMutableArray* animationBlocks = [NSMutableArray new];
typedef void(^animationBlock)(BOOL);
// getNextAnimation
// removes the first block in the queue and returns it
animationBlock (^getNextAnimation)() = ^{
animationBlock block = animationBlocks.count ? (animationBlock)[animationBlocks objectAtIndex:0] : nil;
if (block){
[animationBlocks removeObjectAtIndex:0];
return block;
}else{
return ^(BOOL finished){};
}
};
//add a block to our queue
[animationBlocks addObject:^(BOOL finished){;
[UIView animateWithDuration:1.0 animations:^{
//...animation code...
} completion: getNextAnimation()];
}];
//add a block to our queue
[animationBlocks addObject:^(BOOL finished){;
[UIView animateWithDuration:1.0 animations:^{
//...animation code...
} completion: getNextAnimation()];
}];
//add a block to our queue
[animationBlocks addObject:^(BOOL finished){;
[UIView animateWithDuration:1.0 animations:^{
//...animation code...
} completion: getNextAnimation()];
}];
//add a block to our queue
[animationBlocks addObject:^(BOOL finished){;
NSLog(@"Multi-step Animation Complete!");
}];
// execute the first block in the queue
getNextAnimation()(YES);
Вот пример моего кода
//add a block to our queue
[animationBlocks addObject:^(BOOL finished){;
[UIView animateWithDuration:1.0 animations:^{
//...animation code...
lblLeft.transform = CGAffineTransformMakeScale(1.3,1.3);
lblMiddle.transform = CGAffineTransformMakeScale(1.3,1.3);
lblRight.transform = CGAffineTransformMakeScale(1.3,1.3);
} completion: getNextAnimation()];
}];
//add a block to our queue
[animationBlocks addObject:^(BOOL finished){;
[UIView animateWithDuration:1.0 animations:^{
//...animation code...
lblLeft.transform = CGAffineTransformIdentity;
lblMiddle.transform = CGAffineTransformIdentity;
lblRight.transform = CGAffineTransformIdentity;
} completion: getNextAnimation()];
}];
У меня есть эти три метки на различные виды в разных контроллерах.
Как уже упоминалось, я использую разные контроллеры. Я также попробовал добавить параметр animationBlocks, но у меня проблемы с метками. Спасибо, в любом случае. – Jules
Да, я бы поставил эти методы класса в свой класс, которые вы можете импортировать в любые другие классы, которые в них нуждаются. – joshd
Можете ли вы обновить код примера? – Jules